Python 顺序调用多个子进程

Python 顺序调用多个子进程,python,bash,out-of-memory,subprocess,popen,Python,Bash,Out Of Memory,Subprocess,Popen,我需要能够每隔几毫秒调用一个bash命令,我正在尝试使用子进程来实现这一点。我目前使用: p = subprocess.Popen(command, universal_newlines=True, cwd=CurrentWorkingDirectory ,shell=True, stdout=subprocess.PIPE) 并有一个定时器在需要的时间触发命令 我的问题是,如果我通过使用subprocess.Popen调用这些命令,这是否会打开新的终端来运行每个命令?我想确保我不会遇到任何内

我需要能够每隔几毫秒调用一个bash命令,我正在尝试使用子进程来实现这一点。我目前使用:

p = subprocess.Popen(command, universal_newlines=True, cwd=CurrentWorkingDirectory ,shell=True, stdout=subprocess.PIPE)
并有一个定时器在需要的时间触发命令

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


最好的方法是什么?

要回答您关于终端打开的问题,除非底层bash脚本显式启动终端选项卡或其他内容,否则不会发生这种情况。至于您关于内存使用的问题,这将完全取决于您调用的底层脚本以及您是以顺序方式还是并发方式进行调用。我想澄清一下可能会有帮助

无论您做什么,可能都有比在一分钟内启动上千个进程更好的选择,无论您是否耗尽内存

要按顺序运行子流程,请使用而不是
subprocess.Popen

这是否会打开新的终端来运行每个命令


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

您是否真的在这样做时内存不足?为什么要打开新的终端?我还无法测试这一点,但我将从每个命令运行一个驱动程序。我不确定“subprocess.Popen”的每个后续调用是否会打开一个新的终端,因为它在后台运行。。。我想知道它们是否会堆积起来,或者这样做最终会给我带来什么适得其反的后果。@TWagner:如果你运行一个命令(不是每60毫秒运行一个命令),新的终端会打开吗?如果运行两个连续的命令会怎么样?这难道不容易测试吗?是否打开一个新的终端将完全取决于
命令是什么。如果是
xterm
,那么,是的,您将打开一个新的终端。如果它是
df
,它应该只连接到您当前的终端…所以我只是运行一个驱动程序,需要通过终端运行,使用[python3'program'blah blah blah blah]…作为命令…因此它将是几乎每秒17次的“subprocess.Popen”顺序调用,并且将持续几分钟。因此,每隔60毫秒,我的程序将使用subprocess.Popen(newCommand),如果是这种情况,那么它完全取决于您启动的驱动程序进程的CPU和内存使用情况。Python并没有它对程序施加的内存限制,因此,如果这个程序出现问题,它将一直运行到耗尽系统的限制为止,那么有没有办法将顺序命令发送到后台运行的同一个终端窗口?或者这些打开的终端在完成程序后会退出吗?从上面的评论来看,我认为“进程”和“终端”之间存在混淆。终端是您在命令行上实际输入命令的东西。Popen将在新流程中启动一个新的子程序。它与终端窗口无关。Popen是一种非阻塞呼叫。如果要按顺序执行此操作,我建议使用
调用
检查输出
。更多信息:好的,谢谢,我会打电话给你。但这将等待命令完成吗?我需要程序在这些外部程序生成时继续…单击链接。它导致了文档的出现。使用专用线程生成子进程,以避免阻塞程序的其余部分