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()
。
我目前正在 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()
。