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 に答える