我正在尝试使用multiprocessing
的Pool.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))
任何人都知道问题可能是什么,或解决问题的简单方法?
PicklingError: Can't pickle <class 'function'>: attribute lookup builtins.function failed