Невозможно выбрать <type 'instancemethod'> при использовании многопроцессорной обработки Pool.map ()

Я пытаюсь использоватьmultiprocessing«sPool.map() Функция для разделения работы одновременно. Когда я использую следующий код, он работает нормально:

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

Однако, когда я использую его в более объектно-ориентированном подходе, это не работает. Это сообщение об ошибке:

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

Это происходит, когда моя основная программа:

import someClass

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

и следующее моеsomeClass класс:

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

Кто-нибудь знает, в чем может быть проблема, или простой способ ее обойти?

Ответы на вопрос(11)

Ваш ответ на вопрос