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?

Antworten auf die Frage(11)

Ihre Antwort auf die Frage