小编Rob*_*bie的帖子

将Python编译为WebAssembly

我已经读过可以将Python 2.7代码转换为Web程序集,但是我找不到关于如何这样做的明确指南.

到目前为止,我已经使用Emscripten及其所有必要组件为Web程序集编译了一个C程序,因此我知道它正在运行(使用指南:http://webassembly.org/getting-started/developers-guide/)

为了在Ubuntu机器上执行此操作,我必须采取哪些步骤?我是否必须将python代码转换为LLVM bitcode然后使用Emscripten进行编译?如果是这样,我将如何实现这一目标?

python emscripten webassembly

61
推荐指数
2
解决办法
4万
查看次数

为多个属性定义@property的函数

我正在尝试创建一个函数,它从类实例中获取可变数量的属性,并像使用 @property 一样重新定义它们,为属性提供 getter 和 setter。

我想实现这个目标:

@property
def x(self):
    return self._x

@x.setter
def x(self, value):
    self._x = value

@property
def dx(self):
    return self._dx

@dx.setter
def dx(self, value):
    self._dx = value

@property
def dy(self):
    return self._dy

@dy.setter
def dy(self, value):
    self._dy = value
Run Code Online (Sandbox Code Playgroud)

通过这样做:

decorate_these_attributes(self.x, self.dx, self.dy)
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的:

def decorate_these_attributes(self, *args):

    def attr_set(attr, val):
        attr = val

    for attr in args:
        attr_get = lambda: attr
        attr = property(attr_get, attr_set)
Run Code Online (Sandbox Code Playgroud)

到目前为止,当我调用该函数时,它没有执行任何操作。对我做错了什么有什么想法吗?

python lambda decorator

5
推荐指数
1
解决办法
2197
查看次数

在C中执行正弦函数不起作用

我试图在C中实现正弦函数,但我得到了奇怪的结果.以下是我用来计算正弦的三个函数:

#define PI 3.14159265358979323846
#define DEPTH 16

double sine(long double);
long double pow(long double, unsigned int);
unsigned int fact(unsigned int);

double sine(long double x) {
    long double i_x = x *= PI/180;
    int n = 3, d = 0, sign = -1;

    // fails past 67 degrees
    for (; d < DEPTH; n += 2, d++, sign *= -1) {
        x += pow(i_x, n) / fact(n) * sign;
    }

    return x;
}

long double pow(long double base, unsigned int exp) …
Run Code Online (Sandbox Code Playgroud)

c trigonometry

5
推荐指数
1
解决办法
589
查看次数

使用指定的 HTML 输出从 CMake 项目生成 Web 程序集

我有一个要编译为 Web 程序集的 CMake 项目。为此,我使用了项目基本文件夹中的以下命令:

mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=/home/ubuntu/emsdk/emscripten/1.38.6/cmake/Modules/Platform/Emscripten.cmake -G "Unix Makefiles"
Run Code Online (Sandbox Code Playgroud)

这成功地(或至少我认为)生成了一个.wasm文件和一个.js文件以及各种 cmake 和 make 文件。

我还希望它生成一个 html 文件,就像你可以使用emcc(即emcc example.c -s WASM=1 -o output.html)。

是否有可能做到这一点?

cmake emscripten webassembly

2
推荐指数
1
解决办法
2762
查看次数

使用 cmake 编译时 Valgrind 不显示行号

我正在使用命令编译我的项目cmake .. -G "CodeBlocks - Ninja,它工作正常,但是当我运行 valgrind 时,它不显示任何行号。这是我正在使用的 valgrind 命令:valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --log-file="log.txt" ./pony_gpExe

以下是输出的示例:

==5402== Use of uninitialised value of size 8
==5402==    at 0x40447B: get_double_arr_length (in /home/robbie/Dropbox/MIT/pony_gp_ubuntu/build/pony_gpExe)
==5402==    by 0x405184: get_test_and_train_data (in /home/robbie/Dropbox/MIT/pony_gp_ubuntu/build/pony_gpExe)
==5402==    by 0x4027B3: setup (in /home/robbie/Dropbox/MIT/pony_gp_ubuntu/build/pony_gpExe)
==5402==    by 0x402861: main (in /home/robbie/Dropbox/MIT/pony_gp_ubuntu/build/pony_gpExe)
==5402==  Uninitialised value was created by a stack allocation
==5402==    at 0x405149: get_test_and_train_data (in /home/robbie/Dropbox/MIT/pony_gp_ubuntu/build/pony_gpExe)
Run Code Online (Sandbox Code Playgroud)

不确定这是否有帮助,但这是我的主要 CMakeLists.txt:

cmake_minimum_required(VERSION 3.4.3)
project (pony_gp)
set(DIR ${pony_gp_SOURCE_DIR})

file(GLOB_RECURSE pony_gp_SOURCES "${DIR}/src/*.c")
file(GLOB_RECURSE pony_gp_HEADERS …
Run Code Online (Sandbox Code Playgroud)

c debugging valgrind cmake

1
推荐指数
1
解决办法
1852
查看次数