Python numpy.ctypeslib.as_数组的速度

Python numpy.ctypeslib.as_数组的速度,python,numpy,ctypes,Python,Numpy,Ctypes,我有一个C库,我正在用Python使用ctypes包装它。C库包含许多数组(数万个数组,每个数组由5-100个元素组成,加上几个更长的数组),我想在Python中以numpy数组的形式访问这些数组。我认为使用numpy.ctypeslib.as_数组将非常简单;但是,当我使用cProfile评测代码时,我注意到使用Python循环手动将(!)数据从ctypes指针复制到我在Python端创建的numpy数组要快得多。ctypeslib.as_数组是否已知速度较慢我一直认为,将一些内存解释为num

我有一个C库,我正在用Python使用
ctypes
包装它。C库包含许多数组(数万个数组,每个数组由5-100个元素组成,加上几个更长的数组),我想在Python中以
numpy
数组的形式访问这些数组。我认为使用
numpy.ctypeslib.as_数组将非常简单;但是,当我使用
cProfile
评测代码时,我注意到使用Python循环手动将(!)数据从
ctypes
指针复制到我在Python端创建的
numpy
数组要快得多。
ctypeslib.as_数组
是否已知速度较慢我一直认为,将一些内存解释为numpy数组要比在Python循环中逐元素复制快得多。

您注意到小数组和大数组之间存在差异吗?根据我自己的经验,对于更大的(1M元素)数组,它的速度要快得多。与数组一起使用时,它会在ctypes数组类型上创建一个
\uuuuuuuuuuuuu数组接口\uuuuuu
属性。对于每种大小/类型的数组都应该这样做。与指针一起使用,它在指针对象本身上创建接口。然后它返回
array(obj,copy=False)
。相关问题:@Bakuriu:但是
as\u array
现在添加了
\uu数组接口,\uuu
,因此该问题已过时。如果OP使用ctypes数组而不是指针,则只需为每种大小/类型的数组添加一次接口。是的,大型数组的转换速度非常快,但在转换大量小型数组时,似乎会有大量开销。