我正在使用多处理模块操作 numpy 数组,并且在尝试我在这里运行的一些代码时遇到了问题。具体来说,我正在从一个 numpy 数组创建一个 ctypes 数组,然后尝试将 ctypes 数组返回到一个 numpy 数组。这是代码:
shared_arr = multiprocessing.RawArray(_numpy_to_ctypes[array.dtype.type],array.size)
我不需要任何同步锁,所以我使用的是 RawArray。ctypes 数据类型是根据输入数组的 dtype 从字典中提取的。那工作得很好。
shared_arr = numpy.ctypeslib.as_array(shared_arr.get_obj())
在这里,我得到一个堆栈跟踪说明:
AttributeError: 'c_double_Array_16154769' object has no attribute 'get_obj'
我还尝试了这篇文章中的以下内容,但得到了相同的错误。
def tonumpyarray(shared_arr):
return numpy.frombuffer(shared_arr.get_obj())
我被困在运行 python 2.6 并且不知道这是否是问题,是否是共享变量名称的问题(我试图保持内存使用尽可能低,并且试图不复制 numpy 数组和 ctypes内存中的数组),或者我刚刚学习python的这个组件的其他东西。
建议?