【发布时间】:2015-10-01 21:48:54
【问题描述】:
import time
from multiprocessing import Process
def loop(limit):
for i in xrange(limit):
pass
print i
limit = 100000000 #100 million
start = time.time()
for i in xrange(5):
p = Process(target=loop, args=(limit,))
p.start()
p.join()
end = time.time()
print end - start
我尝试运行这段代码,这是我得到的输出
99999999
99999999
2.73401999474
99999999
99999999
99999999
有时
99999999
99999999
3.72434902191
99999999
99999999
99999999
99999999
99999999
在这种情况下,循环函数被调用了 7 次而不是 5 次。为什么会出现这种奇怪的行为?
我也对p.join() 语句的作用感到困惑。它是同时结束任何一个进程还是所有进程?
【问题讨论】:
-
join不会结束任何事情。它只是一个同步点。它的意思是“我要在这里等到所有流程都完成,然后我们将继续执行”。他们将在完成时完成,无论顺序如何。
标签: python parallel-processing multiprocessing python-multiprocessing