Nie można wytrawiać <typ „instancemethod”> podczas korzystania z wieloprocesorowego Pool.map

Próbuję użyćmultiprocessingjestPool.map() funkcja podziału pracy jednocześnie. Kiedy używam następującego kodu, działa poprawnie:

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()

Jednak gdy używam go w podejściu bardziej zorientowanym obiektowo, nie działa. Wyświetlany komunikat o błędzie:

PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup
__builtin__.instancemethod failed

Dzieje się tak, gdy następujący program jest moim głównym programem:

import someClass

if __name__== '__main__' :
    sc = someClass.someClass()
    sc.go()

a następne jest mojesomeClass klasa:

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))

Czy ktoś wie, na czym polega problem, czy też jest to łatwy sposób?

questionAnswers(11)

yourAnswerToTheQuestion