El multiprocesamiento de pathos no puede decapar

Estoy teniendo un problema similar a esta persona . No puedo ejecutar una rutina simple de multiprocesamiento en el módulo de pathos y recibo un error de decapado. A continuación se muestra el código y el error.

from pathos.multiprocessing import ProcessingPool import dill class ProcClass(object): def __init__(self): pass def f(self,x): return x*x pc = ProcClass() pl = ProcessingPool(3) print pl.map(pc.f, range(10)) 

El error devuelto:

 Exception in thread Thread-2: Traceback (most recent call last): File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/threading.py", line 551, in __bootstrap_inner self.run() File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/threading.py", line 504, in run self.__target(*self.__args, **self.__kwargs) File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/multiprocessing/pool.py", line 320, in _handle_tasks put(task) PicklingError: Can't pickle : attribute lookup __builtin__.function failed 

He instalado: pp, dill, pox y multiprocesamiento luego instalé pathos. La instalación funciona pero siempre me da este error:


ADVERTENCIA: una de las siguientes dependencias no está resuelta: pp (ft)> = 1.6.4.5 eneldo> = 0.2.4 viruela> = 0.2.2 (multi) procesamiento


Basado en una respuesta del autor de pathos a una pregunta similar, parece que hay un problema con la instalación. He quitado y reinstalado varias veces, cada vez que verifico que están instaladas las dependencias adecuadas. Estoy corriendo en MacOS y usando Python 2.7. ¡Cualquier ayuda será apreciada!

Parece que te estás perdiendo una dependencia crítica. Con pathos , debe utilizar multiprocess , que es una bifurcación de multiprocessing que utiliza el serializador de dill .

 >>> import multiprocessing >>> multiprocessing.__version__ '0.70a1' >>> import multiprocess >>> multiprocess.__version__ '0.70.4.dev0' >>> >>> multiprocess.Pool().map(lambda x:x*x, range(10)) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>>