多处理不启动



我刚刚开始学习有关多处理模块,我正在尝试此代码,但它不起作用,我不知道为什么它不会给我任何错误或任何东西我的简单代码正常结束程序,通常不打印任何内容:

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

嗯,您仍然可以使用startjoin

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打印到标准输出

相关内容

  • 没有找到相关文章

最新更新