python - 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 秒。
解决方案
如果要在三个单独的解释器中启动文件,请将它们作为子进程启动:
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()
推荐阅读
- javascript - 需要 Javascript(或 JQuery)长字符串搜索和 CSS 插入帮助
- java - 如何使用 Selenium 在撰写部分中单击更多选项?
- typescript - 缩小工厂返回类型而不通过类的最佳方法
- visual-studio - 如何正确停止运行 dotnet core web 应用程序?
- scala - 输入 SQL 并输出集合的 Scala 库,但适用于 SPARQL / Gremlin?
- c# - WPF / WindowChrome / 模糊“故障”背后
- android - 我想在我的应用上添加带有广告的退出警报对话框
- java - 教科书中的一个铸造问题——是 0.05 还是 0.5?
- linux - IPython 未打开(语法无效)
- angularjs - 等待量角器与页面同步时出错:“angul arJS 可测试性和角度可测试性都未定义