質問: ### 前提・実現したいこと 初心者です。 以下のような、「a.py」 と「b.py」の2つのPythonスクリプトがあるとします。 a.pyを実行すると、 1. "start"と出力。 2. b.pyを呼び出す。(b.pyは5秒間待ってから終了するスクリプトです) 3. b.pyの処理が終了したら、"finish"と出力。 の順で、処理されるようにしようと思っています。 つまり、**"start"の出力から5秒後に"finish"と出力される**のが、期待する結果です。 どなたかご教授いただけますでしょうか...? ### 発生している問題・エラーメッセージ "start"と出力されてから、間髪入れずに"finish"と出力されます。 ### 該当のソースコード ``` # a.py import sys import time time.sleep(5) sys.exit(0) ``` ``` # b.py import sys import subprocess print("start") subprocess.Popen([sys.executable, 'a.py']) print("finish") ``` ### 試したこと 「a.pyの処理の内容をdefでユーザ関数として、それをb.pyでimportして実行する」 ようにすると、今回の問題は解決できます。 ですが、「subprocess.Popenで呼び出したスクリプトそのものの終了を待つ方法が無いのか」疑問に感じましたので、質問させていただきました。 よろしくお願いします。
回答: 以下のようにすると`a.py`の終了待ちができます。 参考:python でコマンド実行。サブプロセスの終了待ち・強制終了・親プロセスと一緒に殺す。 ``` b.py # 略 sub = subprocess.Popen([sys.executable, 'a.py']) sub.wait() # 略 ```