一个父级使用应该并行运行的 python 多处理启动两个进程 A、B。
与 Multiprocessing.Manager 共享两个列表 list_1 list_2
对作为参数传递给 A 的 list_1 的写入,在 A list_1 内部变成了 list_W。A 从作为参数传递给 A 的 list_2 读取,在 A 内部 list_2 变为 list_R B 写入作为参数传递给 B 的 list_2,在 B 内部 list_2 变为 list_W。B 从作为参数传递给 B 的 list_1 中读取,在 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() 比较两个列表值,但由于每个程序一个是读取的,一个是写入的,我不明白这是什么问题。