[英]Python: Run 2 processes in parallel then wait for all with timeout
為以下 python3 任務尋找一些最佳實踐:
program1
program2
我想我知道如何為 1 個過程做到這一點:
import subprocess
p = subprocess.Popen('program1', shell=True)
try:
stdout, stderr = p.communicate(timeout=200)
except subprocess.TimeoutExpired as t:
print(t)
p.kill()
outs, errs = p.communicate()
但是,我無法將這種方法擴展到 2 進程的情況,因為p.communicate
阻塞直到program1
結束或超時。
我也想立即知道其中一個程序是否失敗。
Python3,操作系統 Linux
UPD我需要明智地實現它,沒有任何繁忙的循環、線程等
Process 有一個類似於線程的join()
方法。 所以,在你的情況下:
proc_1 = Process(target=my_func_1)
proc_2 = Process(target=my_func_2)
for proc in [proc_1, proc_2]:
proc.start()
# They are doing their thing and when they've completed they will join the
# main process and your main program can resume
for proc in [proc_1, proc_2]:
proc.join()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.