2013-01-20 41 views
0

是否可以使用get_lock()來鎖定ctypes數組的列或行?是否有可能使用numpy使用get_lock()鎖定ctypes數組的列或行?

喜歡的東西:

lock = mp.Lock() 
cArray = mp.Array(ctypes.c_int, 100*4, lock = lock) 
numpyArray = np.frombuffer(cArray.get_obj()) 
numpyArray.shape = (100,4) 

#In a function later called via multiprocessing.Process - for example 
numpyArray[:,0].get_lock() #Also could be numpyArray.T[0].get_lock() 

我知道這是可能鎖定整個ctypes的陣列,但什麼只是它的部分。我知道數組的大小,並且它將保持不變,所以我可以計算ctypes數組中的偏移量,但是奇怪 - 可以利用numpy的多處理鎖定切片的易用性嗎?

+0

相關:[在共享內存中使用numpy數組進行多處理](http://stackoverflow.com/questions/7894791/use-numpy-array-in-shared-memory-for-multiprocessing)(看看f( )'在我的答案中的功能) – jfs

回答

1

如果你有lock可以鎖定任何代碼塊:

​​

numpy的陣列不具有相關聯的多鎖。爲拿到它,爲實現它;你可以打電話cArray.get_lock()或只是作爲變量lock通過。

相關問題