我在试我的手多处理.pool,它似乎工作得很好,只是整个脚本一次又一次地循环。。。。。在
我的代码-
from multiprocessing import Pool
print "at top!"
arr = [30, 30, 30, 30]
def fib(num):
if num == 0 or num == 1: return 1
else: return (fib(num - 1) + fib(num - 2))
def main():
print "start"
pool = Pool(processes=4)
result = [pool.apply_async(fib, args=(arr[i],)) for i in range(4)]
pool.close()
pool.join()
for res in result:
print res.get()
print "end"
if __name__ == '__main__':
main()
print "end of program ?"
它的回报是-
^{pr2}$我不想重复at top !
和{
我希望主程序在那一点冻结,只有在所有的计算完成后才能继续。在
我在Windows10上运行,64位。Python2.7 32位。在
提前谢谢。在
如果您运行的是windows,pythonwindows生成进程的方式是这样的:脚本的导入次数与派生进程的次数相同。因此,如果将undented(在脚本顶层),则不能只有一个
"at top"
打印。当然,print "end of program ?"
也是如此。在(这在Linux上不会发生,这解释了用户说他们不能复制的评论)
你为什么要用cd3来保护你。因此,要获得预期的输出,您必须:
相关问题 更多 >
编程相关推荐