2024-05-06 00:13:39 发布
网友
我正在写一个程序,其中包括模拟几个不同变量的进化路径。程序的大部分是用Python编写的,但是我正在编写模拟循环的代码(~15k)作为C扩展来提高速度。不过,我还是想利用Numpy的随机数生成器(here)。我知道我可以从我的扩展中调用Python函数,但是这会减慢C循环的速度,从而否定编写扩展的初衷吗?在
从C扩展调用Python函数时,会有几个开销:
判断它是否值得,实际上取决于用C语言完成的代码量以及在那里可以避免多少python对象操作。如果在C语言中只有一个调用python函数的for循环,这可能是不值得的。如果您做了很多可以用C语言完成的数据操作,那么即使您在某处调用Python函数,也可以保存所有这些操作。在
for
但是最快的方法可能是使用numpy C API并直接从C调用numpy函数。这将使您不必将所有参数打包到Python对象中,而仍然使用numpy的功能,从而避免了大部分开销。在
从C扩展调用Python函数时,会有几个开销:
判断它是否值得,实际上取决于用C语言完成的代码量以及在那里可以避免多少python对象操作。如果在C语言中只有一个调用python函数的
for
循环,这可能是不值得的。如果您做了很多可以用C语言完成的数据操作,那么即使您在某处调用Python函数,也可以保存所有这些操作。在但是最快的方法可能是使用numpy C API并直接从C调用numpy函数。这将使您不必将所有参数打包到Python对象中,而仍然使用numpy的功能,从而避免了大部分开销。在
相关问题 更多 >
编程相关推荐