1 つの親が 2 つのプロセス A、B を並行して実行する必要がある Python マルチプロセッシングで起動します。
Multiprocessing.Manager list_1 list_2 で 2 つのリストを共有する
パラメータとして A に渡される list_1 への書き込みは、A list_1 内で list_W になりました。A にパラメーターとして渡される list_2 からの読み取り、A list_2 内で list_R B パラメーターとして B に渡される list_2 への書き込み、B list_2 内で list_W になりました。B にパラメーターとして渡される list_1 から読み取られた B は、B list_1 内で list_R になりました
A または B を multiprocessing.process としてではなく、単一の関数として呼び出すと、問題なく実行されます。
それらを multiprocessing.process として呼び出すと、次のようになります。
Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "myprg/A.py", line 47, in A
watch()
File "myprg/DEFINITIONS.py", line 87, in watch
if list_W[0] != list_R[0]:
File "<string>", line 2, in __getitem__
File "/usr/lib/python2.7/multiprocessing/managers.py", line 759, in _callmethod
kind, result = conn.recv()
IOError: [Errno 104] Connection reset by peer
watch() は 2 つのリストの値を比較しますが、プログラムごとに 1 つが読み取り、もう 1 つが書き込みであるため、何が問題なのかわかりません。