非常に用途限定の小ネタではあるが、なんだかよくわからないマルチスレッディングを使わずに同期を取ってみる。
たぶん、ほとんどの人には役に立たない。
また、もっといい方法はあるはず。
でもこれで十分。(今のところ)
なお、私、Python初心者ですw
やりたいこと
実は、以下のようなことをやりたかった。
1.外部コマンドAを実行
2.外部コマンドBを実行
3.AとBが終わったら外部コマンドCを実行
※AとBは同時実行可能
外部プロセス実行
これはsubprocessが使えた。
終了まで待たれても困るのでpopen()を利用した。
import subprocess
p1 = subprocess.popen("command_A")
p2 = subprocess.popen("command_B")
待つ
両方が終わるのを待つには...wait()てのがあった。
※これが今回の唯一のポイントです
r1 = p1.wait()
r2 = p2.wait()
ちゃんと戻り値もチェックできる。
外部プロセス実行
問題なければ、最後の外部プロセスを実行。
今回は同期しなくてもいいので、check_call()等でOK。
p3 = subprocess.check_call("command_C")
まとめ
もっとお勉強して、もっといいコードを書こう!(爆)