2017-04-17 13 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

ウムを使用しています、あなたはまだ

>>> import multiprocessing 
>>> def x(): 
...  print ("hi") 
... 
>>> example=multiprocessing.Process(target=x) 
>>> example.start(); example.join() 
hi 
>>> 

唯一の理由は、私は取得するには、PythonのREPLで実行startjoin

import multiprocessing 
def x(): 
    print ("hi") 
example=multiprocessing.Process(target=x) 
example.start() # START 
example.join() # JOIN 

を使用することができます2番目の例は、x(通知target=x()target=x)を呼び出しているためです。

最初の例は正常に動作しますが、joinが指定されていない場合、プログラムはmainが終了した後(ただし、子プロセスが終了する前)に終了します。これはゾンビプロセスを作り出し、おそらく標準出力へのhiの印刷のような、より多くの作業をするのを防ぎます。

+0

それはあなたが作成する新しいプロセスではなく、メインプロセスで 'x'を実行しています。 – user2357112

+0

そのタラがあなたのために働いている限り、私はあなたのコンピュータに問題があると思っています。 私は明日までさらに答えを探しています。 –

関連する問題