Bei Verwendung von Multiprocessing Pool.map () kann <Typ 'instancemethod'> nicht ausgewählt werden
Ich versuche es zu benutzenmultiprocessing
'sPool.map()
Funktion zur Aufteilung der Arbeit gleichzeitig. Wenn ich den folgenden Code verwende, funktioniert es einwandfrei:
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()
Wenn ich es jedoch in einem objektorientierteren Ansatz verwende, funktioniert es nicht. Die Fehlermeldung lautet:
PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup
__builtin__.instancemethod failed
Dies tritt auf, wenn Folgendes mein Hauptprogramm ist:
import someClass
if __name__== '__main__' :
sc = someClass.someClass()
sc.go()
und das folgende ist meinsomeClass
Klasse:
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))
Weiß jemand, woran das liegen könnte oder wie man es einfach umgehen kann?