按顺序调用多个子进程

时间:2015-01-05 16:26:50

标签: python bash out-of-memory subprocess popen

我需要能够每隔几毫秒调用一次bash命令,并且我尝试使用子进程来执行此操作。我目前使用:

p = subprocess.Popen(command, universal_newlines=True, cwd=CurrentWorkingDirectory ,shell=True, stdout=subprocess.PIPE)

并有一个计时器在需要的时间触发命令。

我的问题是,如果我通过使用subprocess.Popen来调用这些命令,这会打开新的终端来运行每个命令吗?我想确保我不会遇到任何内存使用问题,因为我将调用数千条命令。

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

无论你做什么,有可能比一分钟内开始上千个进程更好的选择,无论你是否内存不足。

要按顺序运行子流程,请使用subprocess.check_call代替subprocess.Popen

  

这会打开新终端来运行每个命令吗?

不,除非命令本身启动一个新的终端。

答案 1 :(得分:0)

要回答有关终端开放的问题,除非底层bash脚本明确启动终端标签或其他内容,否则不会发生这种情况。关于内存使用的问题,这完全取决于您调用的底层脚本以及您是以顺序还是并发的方式执行此操作。我想稍微澄清可能会有所帮助!