运行多个Python脚本

时间:2014-06-11 13:16:13

标签: python multiprocessing

我想创建一个简单的Python程序,它将同时执行2个独立的脚本。目前,这两个脚本只打印了一系列数字,但我的目的是在将来使用该程序同时运行一些Twitter流媒体程序。

我怀疑我需要使用subprocess.Popen,但我无法理解我应该放在那里的论点。 StackOverflow上有一个类似的问题,但那里提供的代码(粘贴在下面)不会打印任何内容。我将非常感谢你的帮助。

我的档案是:

thread1.py
thread2.py

import subprocess

subprocess.Popen(['screen', './thread1.py']))
subprocess.Popen(['screen', './thread2.py'])

3 个答案:

答案 0 :(得分:1)

正如wanderlust所提到的,为什么你想这样做而不是通过linux命令行呢?

否则,您发布的解决方案正在执行它的意图,即您在命令行执行此操作:

screen ./thread1.py
screen ./thread2.py

这将打开一个屏幕会话并在此屏幕会话中运行程序并输出,这样您就不会直接在终端上看到输出。要解决输出问题,只需在没有屏幕调用的情况下执行脚本:

import subprocess

subprocess.Popen(['./thread1.py'])
subprocess.Popen(['./thread2.py'])

thread1.py的内容:

#!/usr/bin/env python
def countToTen():
  for i in range(10):
  print i

countToTen()

thread2.py的内容:

#!/usr/bin/env python
def countToHundreds():
for i in range(10):
  print i*100

countToHundreds()

然后不要忘记在命令行上执行此操作:

chmod u+x thread*.py

答案 1 :(得分:1)

使用supervisord

supervisord是流程控制系统,仅用于运行多个命令行脚本。

它的特点:

  • 多个受控流程
  • autorestarting failed runs
  • log stdout和stderr output
  • 按顺序启动脚本(使用优先级)
  • 命令行实用程序,用于查看最新日志输出,停止,启动,重新启动进程

此解决方案仅适用于基于* nix的系统,在Windows上不可用。

答案 2 :(得分:1)

你也可以打开几个命令提示符窗口,一次运行几个Python程序 - 只需在每个程序中运行一个:

在每个命令提示符窗口中,转到正确的目录(例如C:/ Python27),然后在一个命令提示符窗口中键入'python YourCodeNo 1 .py','python YourCodeNo 2 .py'在下一个等。 。

我目前正以这种方式同时运行3个代码,而不会减慢任何代码。