Mi dispiace che non riesca a riprodurre l'errore con un esempio più semplice e che il mio codice sia troppo complicato da pubblicare. Se eseguo il programma nella shell IPython invece del normale python, le cose funzionano bene.Errore di decolorazione multiprocessing in Python
Ho cercato alcune note precedenti su questo problema. Sono stati tutti causati dall'utilizzo di pool per chiamare la funzione definita all'interno di una funzione di classe. Ma questo non è il mio caso.
Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib64/python2.7/threading.py", line 552, in __bootstrap_inner
self.run()
File "/usr/lib64/python2.7/threading.py", line 505, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib64/python2.7/multiprocessing/pool.py", line 313, in _handle_tasks
put(task)
PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
Apprezzerei qualsiasi aiuto.
UPDATE: La funzione I pickle è definita al livello più alto del modulo. Sebbene chiami una funzione che contiene una funzione nidificata. i.e, f() chiama g() chiama h() che ha una funzione nidificata i(), e sto chiamando pool.apply_async (f). f(), g(), h() sono tutti definiti al livello superiore. Ho provato un esempio più semplice con questo modello e funziona comunque.
La risposta di livello superiore/accettata è buona, ma potrebbe significare che è necessario ri-strutturare il codice, che potrebbe essere doloroso. Vorrei raccomandare a chiunque abbia questo problema di leggere anche le risposte aggiuntive utilizzando 'dill' e' pathos'. Tuttavia, non ho fortuna con nessuna delle soluzioni quando lavoro con vtkobjects :(Chiunque è riuscito a eseguire il codice Python nell'elaborazione parallela vtkPolyData? – Chris