为什么我不能同时执行?

时间:2015-10-13 23:26:28

标签: python python-3.x python-multiprocessing

考虑以下最小程序:

#!/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

这是为什么?为了得到我期待的结果,我需要做出哪些改变?

2 个答案:

答案 0 :(得分:3)

尝试使用p.start()代替p.run()

答案 1 :(得分:2)

根据文件:

  

在多处理中,通过创建Process对象然后调用其start()方法来生成进程。

所以看起来你应该调用p.start(),然后在一个单独的线程中调用p.run(),这应该会得到你想要的结果。

直接调用p.run()会跳过整个多线程位。