Невозможно выбрать <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))
Кто-нибудь знает, в чем может быть проблема, или простой способ ее обойти?