0

我正在尝试从程序 X 打开程序 Y,并继续使用程序 X,但是,似乎一旦使用命令行调用 Y,它就会开始跳过代码中接下来的任何内容,同时仍响应击键.

所以问题是,如何让 X 完成代码。

我用:

 proc=subprocess.Popen([cmd], shell=True)
 proc.communicate()

也:

 os.system([cmd])

其中 cmd 是带有参数的终端命令。

顺便说一句,我正在运行 Linux。

4

1 回答 1

0

两种方式(Popen+communicate()os.system)都是同步的,因此父进程的执行会阻塞,直到子进程完成。

如果你想让两个进程同时运行,你必须想出一种不同的方法来收集子进程的输出。

一些想法:

  1. 在父进程的线程内移动代码(请参阅线程

  2. 以与标准输出管道proc.communicate()不同的方式剥离并收集子输出。有关更多想法,请参阅多处理模块。或者,如果你觉得很勇敢,可以看看ZeroMQ(可能有点矫枉过正,请注意,我只是认为它是一个很棒的通信库)。

于 2012-08-22T06:13:18.413 回答