2017-04-17 72 views
0

我刚开始学习多处理模块今天,我试着这个代码,但它没有工作,我不知道为什么它不会给我任何错误或任何事情,它只是结束程序通常与在这里打印任何东西是我的简单的代码:多处理不启动

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

+0

如果添加'example.join()',它会起作用吗? –

+0

我不明白为什么第一个例子不起作用,你会得到什么错误? –

+0

不,它只是做同样的事情,即使我添加example.join()它只是结束程序通常没有任何打印 –

回答

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

+0

这是在主进程中运行'x',而不是您创建的新进程。 – user2357112

+0

只要该鳕鱼正在为你工作,那么我想我有我的电脑问题,谢谢 我会寻找更多的答案,直到明天,如果没有为我工作,那么它的挑战与我的电脑问题 –