我在Ubuntu 18.04上使用python 3.6.7
运行下面的脚本后,其中每个进程都有自己的共享锁:
from multiprocessing import Process, Manager
def foo(l1):
with l1:
print('lol')
if __name__ == '__main__':
processes = []
with Manager() as manager:
for cluster in range(10):
lock1 = manager.Lock()
calc_args = (lock1, )
processes.append(Process(target=foo,
args=calc_args))
for p in processes:
p.start()
for p in processes:
p.join()
我有一个奇怪的例外:
Process Process-2:
Traceback (most recent call last):
File "/usr/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run
self._target(*self._args, **self._kwargs)
File "temp.py", line 5, in foo
with l1:
File "/usr/lib/python3.6/multiprocessing/managers.py", line 991, in __enter__
return self._callmethod('acquire')
File "/usr/lib/python3.6/multiprocessing/managers.py", line 772, in _callmethod
raise convert_to_error(kind, result)
multiprocessing.managers.RemoteError:
---------------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python3.6/multiprocessing/managers.py", line 235, in serve_client
self.id_to_local_proxy_obj[ident]
KeyError: '7f49974624e0'
任何想法或建议如何解决此问题?
谢谢