0

是否可以使用 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 切片的易用性吗?

4

1 回答 1

1

如果你有lock你可以锁定任何代码块:

with lock:
    numpyArray[:,0] = 1
    a += 2

Numpy 数组没有关联的多处理锁。为拿到它,为实现它; 您可以调用cArray.get_lock()或仅作为变量传递lock

于 2013-01-21T00:59:12.970 回答