1
数秒かかるbashコマンドから情報を取得する必要があります。リターンコードを取得するまで、残りのプログラムを続行します。私はマルチプロセッシングでそれをやろうとしましたが、コンソールが正しいリターンコードを出力しても、サブプロセスのリターンコードは取得できません。新しいプロセスでBashコマンドを実行する
from multiprocessing import Process, Value
import subprocess
num = Value("d", 0.0)
class foo(object):
def __init__(self):
self.createProcess()
def createProcess(self):
p = Process(target=self.Process, args=(num,))
p.start()
...Do Stuff here in parallel...
def Process(self,n):
somebashParam = int(n.value)
p = subprocess.Popen("some -command"+str(somebashParam),shell=True)
out, err = p.communicate()
n.value = p.returncode
- なぜコンソールは、右のリターンコードをプリントアウトしないが、私はそれをつかむカント?
- 他の新しいプロセスでサブプロセスを起動するのは奇妙なことです。より良い方法がありますか?
なぜプロセスをポーリングしますか?単純に 'do_something_else()'と 'process.wait()'の方が意味をなさないでしょうか? – hek2mgl
@ hek2mgl:結果を待つ方法によって異なります。 – Daniel
どういう意味ですか? – hek2mgl