【发布时间】:2019-01-21 06:52:35
【问题描述】:
我目前正在尝试通过编写一个 C 函数来减少 Python 程序的运行时间,以在一个非常大的数组上完成繁重的工作。目前我只是在使用这个简单的函数。
int * addOne(int array[4])
{
int i;
for(i = 0; i < 5; i++)
{
array[i] = array[i] + 1;
}
return array;
}
我希望我的 Python 代码做的只是调用 C 函数,然后返回新数组。到目前为止,这是我所拥有的:
from ctypes import *
libCalc = CDLL("libcalci.so")
pyarr = [65, 66, 67, 68]
arr = (ctypes.c_int * len(pyarr))(*pyarr)
res = libCalc.addOne(arr)
如何从返回的指针创建 Python 列表?
【问题讨论】:
-
这个问题已经有了一个很好的答案,但这里有一个替代选项:如果您想快速处理大量数值数据,而不是编写自己的 c 扩展,您可以使用numpy。这正是 numpy 的用途,而且它的速度非常快。