如何同时运行多个python文件?

And*_*van 1 python multiprocessing

如何同时运行多个python文件?有 3 个文件:bot_1.py、bot_2.py、bot_3.py。我想同时运行它们。我附上了代码。我应该在工作函数中写什么来使这个脚本工作?我将不胜感激任何帮助。

import multiprocessing
import subprocess
def worker(file):
    #your subprocess code
    subprocess.Popen(['screen', './bot_1.py'])
    subprocess.Popen(['screen', './bot_2.py'])
    subprocess.Popen(['screen', './bot_3.py'])

if __name__ == '__main__':
    files = ["bot_1.py","bot_2.py","bot_3.py"]
    for i in files:
        p = multiprocessing.Process(target=worker(i))
        p.start()
Run Code Online (Sandbox Code Playgroud)

Jon*_*tts 6

假设您的 bot 文件在您在命令行中运行它们时会执行某些内容,我们可以通过将它们导入我们的 python 进程(而不是 shell)来加载它们并执行它们。由于每个 python 文件定义了一个包,我们可以按如下方式执行此操作:

import bot_1, bot_2, bot_3
Run Code Online (Sandbox Code Playgroud)

然而,这将一个接一个地运行它们,并且还会阻止您运行相同的一个两次。为了让它们立即运行,我们可以按照您的建议使用多处理:

import multiprocessing

for bot in ('bot_1', 'bot_2', 'bot_3'):
    p = multiprocessing.Process(target=lambda: __import__(bot))
    p.start()
Run Code Online (Sandbox Code Playgroud)

进程需要一个函数来运行,所以我们使用匿名 lambda 来给它一个,然后动态导入名称。

此处未显示,但只要您不将模块导入父进程,子进程就会强制加载它,这意味着如果需要,您可以在单独的进程中一遍又一遍地运行相同的模块。