【问题标题】:run multiple instances of python script simultaneously同时运行多个python脚本实例
【发布时间】:2021-07-01 20:50:22
【问题描述】:

我正在尝试创建 86 个 task.py 实例以同时运行。

import sys
import subprocess

for file in range(86):
    subprocess.call([sys.executable,'task.py',str(file)+'in.csv',str(filen)+'out.csv'])

【问题讨论】:

  • 有什么问题?
  • @Alex 问题是“subprocess.call 等待命令完成。使用 subprocess.Popen 代替:”

标签: python concurrency python-multithreading fork


【解决方案1】:

subprocess.call 等待命令完成。请改用subprocess.Popen

import sys
import subprocess

procs = []
for i in range(86):
    proc = subprocess.Popen([sys.executable, 'task.py', '{}in.csv'.format(i), '{}out.csv'.format(i)])
    procs.append(proc)

for proc in procs:
    proc.wait()

【讨论】:

  • 这个解决方案是“多线程”解决方案吗?或者实际上它启动了多个 python 实例?
  • @Lisa,正如模块名称所暗示的,它启动多个实例(子“进程”)。 (OP的原始代码也启动了多个实例)
  • 我一直在寻找这样的东西。谢谢
  • 循环和附加时我无法让它工作:out =subprocess.Popen("hugo server -D", stdout = subprocess.PIPE)outputs.append(out) 然后遍历输出并调用output.wait()。它会打开第一个程序,但除非我关闭第一个程序,否则不会打开下一个程序。
  • @MasayoMusic,替换 "hugo server -D" -> ['hugo', 'server', '-D']。如果这不起作用,请发布一个单独的问题,以便其他人可以回答您。
猜你喜欢
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
相关资源
最近更新 更多