29

戻るのを待たずにPythonからプログラムを呼び出す方法はありますか? プログラムをディレクトリにコピーしてそのプログラムを実行するスクリプトを作成しました。しかし、Pythonからプログラムを呼び出すと、起動したプログラムが終了するまでPythonスクリプトは終了しません。私はos.systemとPopenを試しました。これを行う別の方法はありますか?

追加情報: os.P_DETACH を指定した os.spawnl はまだ機能しません。ドキュメントによると、「P_DETACH は P_NOWAIT に似ていますが、新しいプロセスは呼び出しプロセスのコンソールから切り離されます」。しかし、それはまだ呼び出しプロセスに何らかの形で接続されています(呼び出しスクリプトは、呼び出された実行可能ファイルのいずれかが戻るまで終了しません)

プログラム:

os.system("start test.exe")
print "Done"

test.exe を実行すると、Done が出力されます。ただし、スクリプトの実行は終了しません (スクリプト プロセスは実行中です)。P_DETACH を使用してデーモン スレッドと Popen を作成しようとしましたが、まだうまくいきません。

4

2 に答える 2

4

Windows では、シェルSTARTコマンドを使用してプログラムを呼び出すと、親プロセスを「解放」して終了できるはずです。START /?詳細については、DOS プロンプトで試してください。

于 2010-04-08T17:48:57.613 に答える
3

onpoll()の代わりに使用すると、ブロックされず、プログラムの実行を待機しません。ただし、プログラム全体の待機を本当に停止する唯一の方法は、プロセスを開始するデーモンスレッドを作成することだと思います。そうすれば、あなたはそれを待つ必要はありません。wait()Popen

class MyThread(threading.Thread):
    def run(self):
        '''Start your thread here'''
        pass

thread = MyThread()
thread.daemon = True
thread.start()
于 2010-04-08T17:27:55.850 に答える