subprocess 中popen是启动子进程来运行的命令,也就是说,运行主进程下一条命令的时候可能popen中的命令还没有执行完成。
我的业务里面,用到popen调用我编写好的程序,但是数据存在依赖关系,导致最后运行的数据结果出现较大的偏差。
解决方法是, 使用wait函数来等待执行结束。
比如这样:
import subprocess
# 准备命令列表 cmd_list
# ... ...
# 运行
wts_staus = subprocess.Popen(cmd_list, stdout=subprocess.PIPE)
wts_staus.wait()
# 继续执行下面的命令
# ... ...
参考: