【发布时间】:2015-10-13 23:26:28
【问题描述】:
考虑以下最小程序:
#!/usr/bin/env python3
import time
from multiprocessing import Process
def mp_test():
time.sleep(3)
print('mp_test')
print('start')
p = Process(target=mp_test)
p.run()
print('end')
根据我对documentation for the multiprocessing module的理解,这段代码应该在单独的进程中执行mp_test(),也就是说应该和主进程并行执行。因此,我希望得到以下输出:
start
end
mp_test
但是,我得到的实际输出是这样的:
start
mp_test
end
这是为什么?我需要进行哪些更改才能获得预期的结果?
【问题讨论】:
-
p.run()是阻塞调用 -
尝试使用 "import os print 'process id:', os.getpid()" 看看你是否真的得到了 2 个线程,如果是,请检查阻塞调用
标签: python python-3.x python-multiprocessing