質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

1回答

5699閲覧

Pythonから別のPythonを呼び出したとき、別のPythonの終了を待ちたい。

退会済みユーザー

退会済みユーザー

総合スコア0

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2019/05/22 13:15

前提・実現したいこと

初心者です。
以下のような、「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"と出力されます。

該当のソースコード

Python

1# a.py 2import sys 3 4import time 5time.sleep(5) 6sys.exit(0)

Python

1# b.py 2import sys 3import subprocess 4 5print("start") 6subprocess.Popen([sys.executable, 'a.py']) 7print("finish") 8

###試したこと
「a.pyの処理の内容をdefでユーザ関数として、それをb.pyでimportして実行する」
ようにすると、今回の問題は解決できます。
ですが、「subprocess.Popenで呼び出したスクリプトそのものの終了を待つ方法が無いのか」疑問に感じましたので、質問させていただきました。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のようにするとa.pyの終了待ちができます。
参考:python でコマンド実行。サブプロセスの終了待ち・強制終了・親プロセスと一緒に殺す。

Python

1b.py 2# 略 3sub = subprocess.Popen([sys.executable, 'a.py']) 4sub.wait() 5# 略

投稿2019/05/22 13:23

can110

総合スコア38264

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/05/22 13:28

すばやいご回答ありがとうございます! 助かりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問