我在Python中使用多處理程序。我使用multiprocessing.Manager().list()
在子流程中共享列表。首先,我在主要過程中添加一些任務。然後,啓動一些子進程來執行共享列表中的任務,這些子進程還將任務添加到共享列表中。但我有一個例外如下:python多處理器管理器列表錯誤:[錯誤2]沒有這樣的文件或目錄
Traceback (most recent call last):
File "/usr/lib64/python2.6/multiprocessing/process.py", line 232, in _bootstrap
self.run()
File "/usr/lib64/python2.6/multiprocessing/process.py", line 88, in run
self._target(*self._args, **self._kwargs)
File "gen_friendship.py", line 255, in worker
if tmpu in nodes:
File "<string>", line 2, in __contains__
File "/usr/lib64/python2.6/multiprocessing/managers.py", line 722, in _callmethod
self._connect()
File "/usr/lib64/python2.6/multiprocessing/managers.py", line 709, in _connect
conn = self._Client(self._token.address, authkey=self._authkey)
File "/usr/lib64/python2.6/multiprocessing/connection.py", line 143, in Client
c = SocketClient(address)
File "/usr/lib64/python2.6/multiprocessing/connection.py", line 263, in SocketClient
s.connect(address)
File "<string>", line 1, in connect
error: [Errno 2] No such file or directory
我找到一些有關如何使用共享列表蟒蛇多像this。但仍然有一些例外。我不知道例外的意義。常用列表和manager.list之間有什麼區別?
的代碼如下:
nodes = multiprocessing.Manager().list()
lock = multiprocessing.Lock()
AMOUNT_OF_PROCESS = 10
def worker():
lock.acquire()
nodes.append(node)
lock.release()
if __name__ == "__main__":
for i in range(i):
nodes.append({"name":"username", "group":1})
processes = [None for i in range(AMOUNT_OF_PROCESS)]
for i in range(AMOUNT_OF_PROCESS):
processes[i] = multiprocessing.Process(taget=worker, args=())
processes[i].start()
你需要共享足夠的代碼重現該問題對任何人告訴你什麼地方錯在這裏。在嘗試使用它之前,它看起來可能是經理關閉了,但是很難說沒有看到任何代碼。 – dano
看起來代碼使用的是UNIX套接字,並且無法綁定到套接字文件。 –
@dano代碼在[這裏](https://github.com/stamaimer/MrUirf/blob/master/twitter/gen_friendship.py) – stamaimer