2016-08-31 7 views
0

私は、同時に2つのプロセスを実行しようとしているが、唯一の最初のものは、あなたが探している、同時に2つのプロセスを実行している

def add(): 
    while True: 
     print (1) 
     time.sleep(3) 

def sud(): 
    while True: 
     print(0) 
     time.sleep(3) 

p1 = multiprocessing.Process(target=add) 
p1.run() 
p = multiprocessing.Process(target=sud) 
p.run() 
+2

ああ、これはもう一度このバグです。 'start' /' run'という名前の選択肢は、長年にわたって非常に多くの頭痛を引き起こしています。 – user2357112

+0

@ user2357112これはよくあることですが、確かに詐欺がありますか? – jpmc26

+0

@ jpmc26:おそらく、私は 'Pythonマルチプロセッシングの開始実行 'のクイック検索で見つけられませんでした。 – user2357112

答えて

2

は確かに動作しますが、「『メイン ==場合は、」ノートブックが条件を満たしていることは決してありませんようmodule.Don'tがコンソールや木星のノートブックに試すようにこれを実行しようとします。 コード全体をprocess.pyというファイルに保存し、コマンドプロンプトから実行します。 編集 - 正常です。今すぐ試しました - enter image description here

import multiprocessing 
import time 
def add(): 
    while True: 
     print (1) 
     time.sleep(3) 

def sud(): 
    while True: 
     print(0) 
     time.sleep(3) 
if __name__ == '__main__': 
    p1 = multiprocessing.Process(name='p1', target=add) 
    p = multiprocessing.Process(name='p', target=sud) 
    p1.start() 
    p.start() 
3

方法はstart、ないrunで実行されます。 startはプロセスを開始し、runを呼び出して新しいプロセスで作業を実行します。 runに電話をかけると、新しいプロセスの代わりに呼び出しプロセスで作業が実行されます。以下は

+0

start()は何もしません。 – aja

+0

@ YashwantSingh:あなたはWindowsですか?そうであれば、 'start'は別のバグがあるので何もしないようです:あなたは' if __name__ == '__main __' 'ガードを使用しませんでした。フォークが不足しているためWindows上で'マルチプロセッシング ' '。 – user2357112

+0

__name__ == '__main__' – aja

関連する問題