2

無限ループを含む関数を同時に3回処理したい。Pythonマルチプロセッシング無限ループ

マイコード:

import multiprocessing 

def worker(numbers): 
    while True: 
     print numbers 

if __name__ == '__main__': 
    nums = ["1","2","3"] 
    for i in nums: 
     p = multiprocessing.Process(target=worker(i)) 
     p.start() 

問題がループし続けている唯一のrawingコメントを1として

1 
1 
1 
1 
1 
1 
1 
+0

あなたは 'target = worker(i)' ___calls___無限ループを含む関数を知っていますか?あなたのコードは決して 'p.start()'に届きません。 –

答えて

2

、「1」の代わりにtargetキーワード引数に関数オブジェクトを渡す、あなたそれを直接呼び出していて、戻り値を渡しています。戻り値は無限ループなので返されません。

はこれを試してみてください:

import multiprocessing 

_MAX_ITERATIONS = 10 

def worker(numbers): 
    iteration = 0 
    while True: 
     if iteration >= _MAX_ITERATIONS: 
      break 

     print(numbers) 
     iteration += 1 

if __name__ == '__main__': 
    nums = ["1","2","3"] 
    for i in nums: 
     p = multiprocessing.Process(target=worker, args=(i,)) 
     p.start() 

私はそれ以外の場合はプロセスをkillする必要がないのために_MAX_ITERATIONSガードを追加しました。