【问题标题】:Execute multiple .py files at the same time同时执行多个 .py 文件
【发布时间】:2013-08-13 18:11:03
【问题描述】:

我想在一个 Python 脚本文件中同时运行三个 .py 文件。我最初调用了 subprocess.call() 三次(每个 .py 文件一次),但记得它会阻塞直到命令完成。我尝试了subprocess.Popen(['screen', 'python_file']),因为我相信它不会阻塞,但是当我使用screen -ls 检查进程时,只有一个进程在运行。如何使用 Python 脚本让所有三个程序同时运行?我应该使用multiprocessing 还是multithreading 库?

编辑:其他进程不应该完成,因为它们正在无限循环中运行。这正是我在 Python 脚本文件中的内容。我正在使用screen,因为每个 .py 文件都将标准输出记录到终端上,我希望能够查看每个文件记录的内容。


subprocess.Popen(['screen', './submitter.py'])
subprocess.Popen(['screen', './worker.py'])
subprocess.Popen(['screen', './tester.py'])

【问题讨论】:

  • Popen 已经做了你想做的事。如果您只能看到一个进程,则仅表示其他进程已经完成工作(或者可能由于错误而退出)。
  • 它对我有用。你能给我们举个例子吗?
  • 您使用“屏幕”的任何原因?它不仅仅需要运行文件。
  • @tdelaney 我运行screen -ls时显示的示例?
  • 你所做的对我有用。也许 .py 文件失败了。您可以将它们全部创建在一个列表中,休眠几秒钟,然后打印出返回码 for p in procs:print p.returncode。如果 proc 仍在运行,它将为 None。

标签: python scripting


【解决方案1】:

如果你想使用multiprocessing,你可以试试这个:

import multiprocessing

def worker(file):
    # your subprocess code


if __name__ == '__main__':
    files = ["path/to/file1.py","path/to/file2.py","path/to/file3.py"]
    for i in files:
        p = multiprocessing.Process(target=worker, args=(i,))
        p.start()

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 2021-11-20
  • 2018-12-29
  • 2020-10-07
相关资源
最近更新 更多