【发布时间】:2019-02-18 22:43:40
【问题描述】:
我有一个程序,我需要两个进程同时运行,一个进程需要在另一个进程之前启动。根据我在脚本中的进度以及在某些进程中发生的错误等因素,还涉及其他子进程,但在主要两个进程正在运行时,这些子进程都不需要运行。
sys.stdout.flush()
proc1 = subprocess.Popen(<command line tool>, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc1_data, proc1_stderr = proc1.communicate()
time.sleep(0.1) # allow time proc1 to kick in
proc2 = subprocess.Popen(<command line tool>, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc2_data, proc2_stderr = proc2.communicate()
proc2.wait()
proc1.kill()
proc2.kill()
# do error checking among other things in other subprocesses based on this data
这在某些时候有效,但通过查看在 proc1 和 proc2 期间打开的硬件上的 LED,我可以看到它们有时不同步,因为 proc2 有时会在 proc1 开启之前运行并完成。
有什么方法可以确保流程按顺序启动?并且那个 proc2 在 proc1 完成之前运行?
【问题讨论】:
标签: python multithreading subprocess