4
我正在使用多處理模塊來操作numpy數組,並且遇到了一個嘗試我在這裏運行的一些代碼的問題。具體來說,我從一個numpy數組創建一個ctypes數組,然後嘗試將ctypes數組返回到一個numpy數組。這裏是代碼:Python共享內存數組,無屬性get_obj()
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'
我自己也嘗試從this post以下,但得到相同的錯誤。
def tonumpyarray(shared_arr):
return numpy.frombuffer(shared_arr.get_obj())
我堅持跑步的Python 2.6,不知道如果是這樣的問題,如果是與共享變量名(我想保持內存使用盡可能低和問題,我儘量不在內存中複製numpy數組和ctypes數組),或者我正在學習python的這個組件。
對此提出建議?
我要補充我真的不想回到一個numpy數組,只是返回一個ctypes數組的視圖,我可以寫出一個numpy數組(如果我正確理解操作的順序)。 – Jzl5325 2012-07-27 18:41:45