【发布时间】:2019-10-18 07:41:15
【问题描述】:
如果我在循环中运行一系列os.popen(...) 语句,每个语句都附加一个read(),这些命令会并行运行,还是read() 调用会导致代码等待每个进程执行在继续之前终止?
for cmd in ['cmd1', 'cmd2', 'cmd3']:
os.popen(cmd).read()
通过阅读文档,我认为这些命令会同时运行,但是我尝试了一个实验,在这样的循环中启动一系列 sleep 1 命令:
for cmd in ['sleep 1', 'sleep 1', 'sleep 1']:
os.popen(cmd).read()
并希望它们同时运行,但 popen 似乎要等到每个睡眠命令完成后再继续下一个,所以现在我不确定。
我知道os.popen 已被弃用,应该改用subprocess 模块,但是我正在调查使用os.popen 的旧脚本中的一个错误,并想检查是否并行执行命令可能会发生。
【问题讨论】:
-
@OferSadan 我在没有 read() 调用的情况下再次尝试了带睡眠的循环,但它似乎仍在等待每个循环完成
-
我想你需要的是
os.popen2
标签: python python-2.7 popen