私はPythonマルチプロセッシングを使用したプログラムを持っています。私は、メインプログラムで作成されたすべてのプロセスを終了することができますが、メインプログラムは常に戻り値を待っているので停止できません。誰も私にこの問題を解決する方法のいくつかの提案を与えることができますか?次のように プロセスはPythonマルチプロセスプールで停止できません
コードスニペット
は:メインプログラム:私はすべてのために、 "サブ機能を行う" 出力を見ることができる
# doing some other jobs
result = {.....} # a large dictionary
print 'done with sub functions'
return result # if I change it to "return 1", it can finish successfully
workers = multiprocessing.Pool(4)
args = [arg1, arg2, arg3, arg4]
results = workers.map(subfunc, args)
print "we are in main functions "
subfunc(*引数) mainで作成されたプロセスは出力されず、 "main関数にあります"。誰も私が問題を理解するのを助けることができますか?
結果の長さに合わせてテストすることはできますか? Mayhapこの動作は、ループを実行しないためです。 – mklauber
結果ディクショナリに再帰参照があり、ピクルにすることができないことがあります。 pickleまたはjsonとしてstdoutに書き出してみてください。 – j13r
これは私が今やったことです、それは動作します。 – hanqiang