I worte un programma di multiprocessing in python. Io uso multiprocessing.Manager().list()
per condividere l'elenco all'interno del sottoprocesso. Inizialmente, aggiungo alcune attività nel processo principale. Quindi, avviare alcuni sottoprocessi per eseguire attività che, nell'elenco condiviso, i processi secondari aggiungono anche attività all'elenco condiviso. Ma ho ottenuto un'eccezione come segue:errore elenco gestore multiprocessing python: [Errno 2] Nessun file o directory tale
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
trovo qualcosa su come utilizzare elenco condiviso in Python multiprocessing come this. Ma hanno ancora qualche eccezione. Non ho idea del significato dell'eccezione. E qual è la differenza tra la lista comune e la manager.list?
il codice come segue:
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()
Avrete bisogno di condividere abbastanza codice per riprodurre il problema per chiunque di dirvi che cosa è andato storto qui. Sembra che forse il manager si sia spento prima che tu provassi ad usarlo, ma è difficile dire senza vedere alcun codice. – dano
Sembra che il codice utilizzi socket UNIX e non sia in grado di collegarsi al file socket. –
@dano il codice è in [here] (https://github.com/stamaimer/MrUirf/blob/master/twitter/gen_friendship.py) – stamaimer