多处理不开始

时间:2017-04-17 20:36:35

标签: python multiprocessing

我刚刚开始学习多处理模块,我正在尝试使用此代码,但它没有工作,我也不知道它为什么不给我任何错误或任何事情它只是结束通常没有打印任何东西的程序是我的简单代码:

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

1 个答案:

答案 0 :(得分:0)

嗯,你仍然可以使用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() vs target=x)。

您的第一个示例有效但没有join,程序在main完成后终止(但在子进程完成之前)。这会创建一个僵尸进程并可能阻止它执行更多工作,例如将hi打印到标准输出