Python subprocess.call()为每个调用生成新进程

时间:2013-11-23 05:29:38

标签: python subprocess single-instance

我正在尝试将.mp4文件发送到mp4标记应用程序。我的问题是,每次拨打subprocess.call()subprocess.Popen()时,都会在Windows上生成新进程。

我想要的是在流程已经运行的情况下在现有流程中打开文件...这可能还是取决于被调用流程如何处理新流程调用?

这就是我所拥有的:

def sendToTagger(self, file):
            msg = "-- " + self.getDateStamp() + "-- Sending " + os.path.basename(file) + " to Tagger...\r\n"
            self.logFile.write(msg)
            print(msg)
            p = subprocess.Popen(['C:\\Program Files (x86)\\Tagger\\Tagger.exe', file], shell=False, stdin=None, stdout=None)

2 个答案:

答案 0 :(得分:1)

它必须生成一个新进程,因为您调用的外部命令不是python代码的本机命令。但是,如果您希望通过调用p.wait()

等待进程完成,则可以

答案 1 :(得分:0)

subprocess.Popen总是打开一个新进程(这就是它的目的)。您需要确定Tagger.exe如何允许其他程序以编程方式请求它打开新文件。在最简单的情况下,您可以通过stdin与它进行简单的通信(其中您需要将stdin和stdout设置为PIPE)。但是,您的程序可能需要一些其他的进程间通信方法(IPC)。比如套接字,共享内存等。我不熟悉Windows上的方法,但如果Tagger是一个图形程序,你很可能需要做一些更复杂的事情。

相关问题