Python 多处理

Python Mulitprocessing

我目前正在 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() 没有被调用,那么这个函数怎么会是 运行ning?

当你这样做时

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

你实际上调用了函数。根据 docs,正确的方法是

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

target= 关键字需要在新进程中调用 函数 。 你有效地传递了它 None 因为你写的是 target=test_def() 而不是 target=test_def。前者在调用 test_def() 函数后给出 return 值(即 None)。

您实际上也从未启动您的流程,因此您还需要添加 p.start()p.join()