1
以下腳本在使用Python 2.6.7運行時會掛起。它按預期在Python 2.7中打印[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
。它可能是Python 2.6中的一個錯誤嗎?有沒有解決方法?multiprocessing.Pool.imap_unordered在Python 2.6中掛起?
def p1(x):
return x + 1
class Tasks(object):
@property
def mapper(self):
from multiprocessing import Pool
pool = Pool(processes=2)
return pool.imap_unordered
def run(self):
xs = range(10)
return self.mapper(p1, xs)
ts = Tasks()
print(list(ts.run()))
在我的計劃,我可以通過重寫Tasks.run
要解決的竅門:
def run(self):
xs = range(10)
mapper = mapper
return mapper(p1, xs)
但我不能用上面的腳本重現此。
另請注意,在這裏使用@property
是必不可少的。在分配像__init__
以下mapper
解決了這個問題:
def __init__(self):
from multiprocessing import Pool
pool = Pool(processes=2)
self.mapper = pool.imap_unordered
嗨,我還沒有試過這種解決方案,但你可以試一試:http://www.rueckstiess.net/research/snippets/show/ca1d7d90 – n3rV3 2013-04-24 17:42:24
我不發送類的實例,所以我認爲這個鏈接是無關緊要的。 – tkf 2013-04-24 18:37:13