是否可以使用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 :(得分:1)
如果您有lock
,则可以锁定任何代码块:
with lock:
numpyArray[:,0] = 1
a += 2
Numpy数组没有关联的多处理锁。为拿到它,为实现它;您可以拨打cArray.get_lock()
或仅将其作为变量lock
传递。