No puedo decapitar <type 'instancemethod'> cuando se usa Pool.map () de multiprocesamiento
Estoy tratando de usarmultiprocessing
esPool.map()
Función para dividir el trabajo simultáneamente. Cuando uso el siguiente código, funciona bien:
import multiprocessing
def f(x):
return x*x
def go():
pool = multiprocessing.Pool(processes=4)
print pool.map(f, range(10))
if __name__== '__main__' :
go()
Sin embargo, cuando lo uso en un enfoque más orientado a objetos, no funciona. El mensaje de error que da es:
PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup
__builtin__.instancemethod failed
Esto ocurre cuando el siguiente es mi programa principal:
import someClass
if __name__== '__main__' :
sc = someClass.someClass()
sc.go()
y el siguiente es misomeClass
clase:
import multiprocessing
class someClass(object):
def __init__(self):
pass
def f(self, x):
return x*x
def go(self):
pool = multiprocessing.Pool(processes=4)
print pool.map(self.f, range(10))
¿Alguien sabe cuál podría ser el problema o cómo evitarlo?