【发布时间】:2014-06-11 13:16:13
【问题描述】:
我想创建一个简单的 Python 程序,它可以同时执行 2 个独立的脚本。目前,这两个脚本只是打印一个数字序列,但我打算在未来使用这个程序同时运行一些 Twitter 流媒体程序。
我怀疑我需要使用subprocess.Popen,但我无法完全理解我应该在那里输入哪些参数。 StackOverflow 上有一个类似的问题,但那里提供的代码(粘贴在下面)没有打印任何内容。感谢您的帮助。
我的文件是:
thread1.py
线程2.py
import subprocess
subprocess.Popen(['screen', './thread1.py']))
subprocess.Popen(['screen', './thread2.py'])
【问题讨论】:
-
在 Unix 中使用管道运行并行进程不是更简单更明显吗? IE。
./thread1.py;./thread2.py -
是的,普通的 Unix 进程管道可以解决问题。只是提醒一下,如果操作是 i/o 绑定的,您应该考虑在 Python 中使用线程而不是进程。
-
谢谢,我已经尝试了你的建议:python ./thread1.py;./thread2.py 但我只从第一个脚本中获取打印的数字,我想要两个脚本同时运行。
-
由于管道使用,您应该将两个脚本作为单独的 python 程序运行:
python thread1.py;python thread2.py。在您的情况下,我假设您没有 python preambula,因此您的脚本需要使用 python 解释器,如上所述。这就是为什么你的第二个脚本没有运行的原因。请注意,您应该在文件所在的目录中,并且不需要“./”前缀,表示您从当前文件夹中获取文件。 -
我尝试将上述 Unix 方法用于两个下载 Twitter 时间线的脚本。不幸的是,这些脚本似乎不是并行运行的。我的每个脚本都构建了一个单独的 MySQL 表,我可以看到第二个脚本的表只有在我中断第一个脚本后才开始构建。这是@AashishP 提到的情况吗?我应该使用线程吗?