我刚刚开始学习有关多处理模块,我正在尝试此代码,但它不起作用,我不知道为什么它不会给我任何错误或任何东西我的简单代码正常结束程序,通常不打印任何内容:
import multiprocessing
def x ():
print ("hi")
example=multiprocessing.Process(target=x)
example.start()
当我这样做时,它有效:
import multiprocessing
def x ():
print ("hi")
example=multiprocessing.Process(target=x())
,但这对我没有用,因为我需要使用join()
和start()
我正在使用python 3.5.2
嗯,您仍然可以使用start
和join
import multiprocessing
def x ():
print ("hi")
example=multiprocessing.Process(target=x)
example.start() # START
example.join() # JOIN
在python repl中运行,我得到,
>>> import multiprocessing
>>> def x ():
... print ("hi")
...
>>> example=multiprocessing.Process(target=x)
>>> example.start(); example.join()
hi
>>>
第二个示例似乎起作用的唯一原因是您正在调用x
(请注意target=x()
与target=x
(。
您的第一个示例有效,但没有join
,该程序在MAIN完成后将终止(但是在子进程完成之前(。这会创建一个僵尸过程,并可能阻止它做更多的工作,例如将hi
打印到标准输出