为什么要使用多处理来获得EOFError。经理()?

2024-03-28 11:53:40 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,为了通过使用multiprocessing在不同进程之间共享数据,我们使用multiprocessing.Manager()。我想在下面的代码中获得输出[1,2,3,4,5,6,7,8,9,10],但我得到的是EOFError。为什么? 代码是:

import multiprocessing
manager=multiprocessing.Manager()

final_list=manager.list()
input_list_one=[1,2,3,4,5]
input_list_two=[6,7,8,9,10]

def worker(data):
    for item in data:
        final_list.append(item)

process_1=multiprocessing.Process(target=worker,args=[input_list_one])
process_2=multiprocessing.Process(target=worker,args=[input_list_two])
process_1.start()
process_2.start()
process_1.join()
process_2.join()

print(final_list)

我得到以下错误:

Process SyncManager-1:
Traceback (most recent call last):
  File "/data/user/0/org.qpython.qpy3/files/lib/python36.zip/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/data/user/0/org.qpython.qpy3/files/lib/python36.zip/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "/data/user/0/org.qpython.qpy3/files/lib/python36.zip/multiprocessing/managers.py", line 539, in _run_server
    server = cls._Server(registry, address, authkey, serializer)
  File "/data/user/0/org.qpython.qpy3/files/lib/python36.zip/multiprocessing/managers.py", line 139, in __init__
    self.listener = Listener(address=address, backlog=16)
  File "/data/user/0/org.qpython.qpy3/files/lib/python36.zip/multiprocessing/connection.py", line 438, in __init__
    self._listener = SocketListener(address, family, backlog)
  File "/data/user/0/org.qpython.qpy3/files/lib/python36.zip/multiprocessing/connection.py", line 576, in __init__
    self._socket.bind(address)
PermissionError: [Errno 13] Permission denied
Traceback (most recent call last):
  File "/storage/emulated/0/qpython/.last_tmp.py", line 2, in <module>
    manager=multiprocessing.Manager()
  File "/data/user/0/org.qpython.qpy3/files/lib/python36.zip/multiprocessing/context.py", line 56, in Manager
  File "/data/user/0/org.qpython.qpy3/files/lib/python36.zip/multiprocessing/managers.py", line 517, in start
  File "/data/user/0/org.qpython.qpy3/files/lib/python36.zip/multiprocessing/connection.py", line 250, in recv
  File "/data/user/0/org.qpython.qpy3/files/lib/python36.zip/multiprocessing/connection.py", line 407, in _recv_bytes
  File "/data/user/0/org.qpython.qpy3/files/lib/python36.zip/multiprocessing/connection.py", line 383, in _recv
EOFError
1|u0_a823@land:/ $


Tags: inpyorgdataliblinefileszip