Python多处理

时间:2016-04-15 07:33:08

标签: python multiprocessing

我目前正在使用Python进行多处理,我已经制作了这个小脚本:

import multiprocessing, time

def test_def():
        time.sleep(5)

p = multiprocessing.Process(target=test_def())
print p, p.is_alive()

然而,当我运行它时,它会在打印出来之前等待5个秒:

<Process(Process-1, initial)> False

对我来说,这没什么意义。如果没有调用p.start(),那么该函数如何运行?

2 个答案:

答案 0 :(得分:2)

当你这样做时

p = multiprocessing.Process(target=test_def())

你实际上是在调用这个函数。根据{{​​3}},正确的方法是

p = multiprocessing.Process(target=test_def)
p.start()
p.join()

答案 1 :(得分:1)

target=关键字需要在新流程中调用函数。 由于您已撰写None而非target=test_def(),因此您有效地传递了target=test_def。前者在调用test_def()函数后给出None函数的返回值(p.start())。

您实际上也从未开始您的流程,因此您还需要添加p.join()ru_maxrss