我也对pool.map可以接受哪种功能的限制感到恼火。为了避免这种情况,我写了以下内容。即使递归使用parmap,它似乎也可以工作。
from multiprocessing import Process, Pipefrom itertools import izipdef spawn(f): def fun(pipe, x): pipe.send(f(x)) pipe.close() return fundef parmap(f, X): pipe = [Pipe() for x in X] proc = [Process(target=spawn(f), args=(c, x)) for x, (p, c) in izip(X, pipe)] [p.start() for p in proc] [p.join() for p in proc] return [p.recv() for (p, c) in pipe]if __name__ == '__main__': print parmap(lambda x: x**x, range(1, 5))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)