我目前正在使用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(),那么该函数如何运行?
答案 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
。