Pythonで別のプログラムを起動させたい
Pythonで3つのプログラムを作り、一方を起動させるともう一方の方も並行して起動させるプログラムを作ろうと思っているんですがなかなかうまく行きません、どうしたらいいでしょうか?
試したこと
例えばmainA.pyとsubB.py、subC.pyを作ります
mainA.pyには
Python
1import subprocess as sb 2import time 3 4#3回繰り返します 5for count in range(3): 6 7 #Hello!を出力 8 print("Hello!") 9 #suB.pyを起動 10 sb.check_call({"python","subB.py"}) 11 #Aを出力 12 print("A") 13 14 #3秒停止 15 time.sleep(3) 16 17 #subC.pyを起動 18 sb.check_call(["python","subC.py"]) 19 #Dを出力 20 print("D") 21
subB.py
Python
1import time 2 3#Call me?を出力 4print("Call me?") 5 6#5秒停止 7time.sleep(5) 8 9#Bを出力 10print("B") 11
subC.py
Python
1import time 2 3#What happened?を出力 4print("What happened?") 5 6#5秒停止 7time.sleep(5) 8 9#Cを出力 10print("C") 11
という感じでmainA.pyを起動するとsubB.py、subC.pyが並行して起動する形にします
ここまではできたんですがただこの形にすると
出力結果は
Hello! Call me? B A What happened? C D Hello! Call me? B A What happened? C D Hello! Call me? B A What happened? C D
上記のようになりますが”A”と”D”の文字が出力するまでBとCのプログラムのおかげでそれぞれ5秒かかってしまいます
また”D”の文字が出力したあとすぐにHello!を出力されますがただ2巡目のHello!を出力するまで13秒かかります
Aプログラムの3秒はいいのですがやはりBとCのプログラムのおかげで10秒が余計にかかってしまいます
ただ私としてはBとCのプログラムを起動はするんですが”A”と”D”は優先的に出力、というよりもAのプログラムは先に処理済まさせたいと思っています
結果的にはBとCのプログラムはAのプログラムに干渉せず独立した形で起動させたいです
ただ単純に起動させるだけでいいのですがどうしたらいいでしょうか
osを使っても
Python
1import os 2import time 3 4#3回繰り返します 5for count in range(3): 6 7 #Hello!を出力 8 print("Hello!") 9 #suB.pyを起動 10 os.system({"C:\Users\亮\PycharmProjects\untitled1\venv\subB.py"}) 11 #Aを出力 12 print("A") 13 14 #3秒停止 15 time.sleep(3) 16 17 #subC.pyを起動 18 os.system(["C:\Users\亮\PycharmProjects\untitled1\venv\subC.py"]) 19 #Dを出力 20 print("D")
File "C:/Users/亮/PycharmProjects/untitled1/venv/btmainA.py", line 10 os.system({"C:\Users\亮\PycharmProjects\untitled1\venv\btsubB.py"}) ^ SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape Process finished with exit code 1
という感じでエラーが出てしまいます
補足情報(FW/ツールのバージョンなど)
Windows8.1
Python3.6.3
PyCharm
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。