Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@mine820

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

More than 3 years have passed since last update.

非常に用途限定の小ネタではあるが、なんだかよくわからないマルチスレッディングを使わずに同期を取ってみる。
たぶん、ほとんどの人には役に立たない。
また、もっといい方法はあるはず。
でもこれで十分。(今のところ)
なお、私、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
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
mine820
もうプログラムを書かなくなって久しい、元アプリケーションエンジニアのおじさんです。 C言語万能教に侵されています。 OpenGLとOpenCVとDirectShowでメシ食ってました。 たまには趣味で書いていこうかと思っています。 ※発信の内容は全て個人の見解に基づくもので、所属する組織の見解ではありません
ark-info-sys
最新IT技術を利用したソフト開発、パッケージ製品の企画開発を中心に、お客様に満足いただけるサービスをご提供いたします。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?