LoginSignup
0
0

More than 5 years have passed since last update.

【小ネタ】Pythonでマルチスレッディングせずに同期をとる(用途限定)

Last updated at Posted at 2017-02-10

非常に用途限定の小ネタではあるが、なんだかよくわからないマルチスレッディングを使わずに同期を取ってみる。
たぶん、ほとんどの人には役に立たない。
また、もっといい方法はあるはず。
でもこれで十分。(今のところ)
なお、私、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")

まとめ

もっとお勉強して、もっといいコードを書こう!(爆)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0