我試圖使用multiprocessing
的Pool.map()
函數來同時分配工作。當我使用下面的代碼,它工作正常:使用多處理時不能pickle <type'instancemethod'> 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()
然而,當我在一個更面向對象的方法使用它,這是行不通的。它給人的錯誤信息是:
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 <type 'instancemethod'>: attribute lookup
__builtin__.instancemethod failed
這時候下面是我的主要程序中出現問題可能是或簡單的解決方法?
如果f是一個嵌套函數有一個類似的錯誤'PicklingError:不能鹹菜的:屬性查找建宏。功能失敗' –
ggg