这里有两个错误。首先,在Windows上运行时,必须声明
Pool内部
if__name__ =="__main__":保护。其次,即使只传递一个参数,也必须给关键字参数传递一个序列。所以放在一起:
args
import multiprocessing as mpdef cube(x): return x**3if __name__ == "__main__": pool = mp.Pool(processes=2) results = [pool.apply_async(cube, args=(x,)) for x in range(1,7)] print([result.get() for result in results])
输出:
[1, 8, 27, 64, 125, 216]
编辑:
哦,正如moarningsun提到的
multiprocessing
那样,在交互式解释器中不能很好地工作:
注意
此软件包中的功能要求该
__main__模块可由子级导入。编程指南中对此进行了介绍,但是这里值得指出。这意味着某些示例(例如multiprocessing.Pool示例)在交互式解释器中将不起作用。
因此,您实际上需要将代码作为脚本执行才能正确测试。



