首页 > 解决方案 > Python:如何同时运行多个文件?

问题描述

我正在尝试创建一个 For 循环,它会同时自动启动不同的 python 文件,但它们似乎总是一个接一个地运行。

import os
import multiprocessing
import p1, p2, p3

#first idea

path = "C:" + "\\Users\\Max\\\\Desktop\\\python\\tasks\\"
tasks = ['p1.py', 'p2.py', 'p3.py']
len = tasks.__len__()
ind = 0
for i in range(len):
    os.system('python' + ' ' + tasks[ind])
    ind += 1

#second idea

for x in ('p1', 'p2', 'p3'):
    p = multiprocessing.Process(target=lambda: __import__(x))
    p.start()

p1, p2, p3 是我试图同时运行的文件,但它们一个接一个地执行,所以如果代码是:

time.sleep(10)
print("hello)

我将不得不等待 30 秒才能完成程序,而不是我想要的 10 秒。

标签: pythonmultithreadingos.system

解决方案


如果要在三个单独的解释器中启动文件,请将它们作为子进程启动:

import subprocess
path = r"C:\Users\Max\Desktop\python\tasks"
tasks = ['1.py', '2.py', '3.py']
task_processes = [
    subprocess.Popen(r'python %s\%s' % (path, task), shell=True)
    for task
    in tasks
]
for task in task_processes:
    task.wait()

推荐阅读