如何同时运行多个Python文件



如何同时运行多个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()

假设您的机器人文件在命令行运行时执行某些内容,我们可以通过将它们导入到我们的Python进程(而不是Shell(来加载并执行它们。当每个python文件定义一个包时,我们可以按以下方式执行此操作:

import bot_1, bot_2, bot_3

然而,这将彼此运行,也可以防止您两次运行相同的运行。为了让他们立即运行,我们可以按照您的建议使用多处理:

import multiprocessing
for bot in ('bot_1', 'bot_2', 'bot_3'):
    p = multiprocessing.Process(target=lambda: __import__(bot))
    p.start()

流程需要运行一个函数,因此我们使用匿名lambda给它一个,然后动态导入名称。

它没有在这里显示,但是只要您不将模块导入父进程,孩子就会被迫加载它,这意味着您可以在单独的过程中一遍又一遍地运行相同的操作到。

来自文档的多处理中,通过创建一个过程对象,然后调用其start((方法来产生过程。

所以我想这样做的好方法是以下内容:

bots = ['bot1','bot2','bot3']
modules = map(__import__,bots)
import multiprocessing,subprocess
multiprocessing.Process(target=modules)

在bot1,2,3中,我使用了简单的打印(" bot1"(,bot2和bot3,输出如预期:

user@machine:~$ python mainscript.py 
bot1
bot2
bot3

相关内容

  • 没有找到相关文章

最新更新