1

コマンドラインアプリを起動するサーバーがあります。ローカルファイルパスを受け取り、ファイルをロードし、何かをエクスポートしてから閉じます。

動作していますが、アクティブなタスクと完了したタスクを追跡できるようにしたいと思います。

したがって、次の行で:p = mp.Process(target = subprocess.Popen(mayapy +'-u' + job.pyFile)、group = None)

'is_alive'を試しましたが、常にFalseを返します。

サブプロセスが閉じます。タスクマネージャーで閉じているのがわかりますが、プロセスとpidはまだクエリ可能のようです。

4

1 に答える 1

2

mp.Process の使用が間違っています。はtarget、 の戻り値ではなく、関数である必要がありますsubprocess.Popen(...)

いずれにせよ、次のように定義した場合:

proc = subprocess.Popen(mayapy + ' -u ' + job.pyFile)

次に、プロセスが動作している間は にproc.poll()なり、プロセスが終了したときのNone戻り値 (ではない) になります。None


たとえば、(出力はコメントにあります)

import subprocess
import shlex
import time
PIPE = subprocess.PIPE

proc = subprocess.Popen(shlex.split('ls -lR /'), stdout=PIPE)
time.sleep(1)
print(proc.poll())
# None

proc.terminate()
time.sleep(1)
print(proc.poll())
# -15
于 2013-03-17T01:14:16.917 に答える