如何同时运行多个python文件?
如何同时运行多个python文件?有3个文件:bot_1.py、bot_2.py、bot_3.py。我想同时运行它们。我附上了密码。我应该在worker函数中写什么才能使这个脚本工作? 我将感谢任何帮助 导入多处理 导入子流程 def workerfile: 您的子流程代码 subprocess.Popen['screen','./bot_1.py'] subprocess.Popen['screen','./bot_2.py'] subprocess.Popen['screen','./bot_3.py'] 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': files=[bot_1.py、bot_2.py、bot_3.py] 对于文件中的i: p=多处理。Processtarget=workeri如何同时运行多个python文件?,python,multiprocessing,Python,Multiprocessing,如何同时运行多个python文件?有3个文件:bot_1.py、bot_2.py、bot_3.py。我想同时运行它们。我附上了密码。我应该在worker函数中写什么才能使这个脚本工作? 我将感谢任何帮助 导入多处理 导入子流程 def workerfile: 您的子流程代码 subprocess.Popen['screen','./bot_1.py'] subprocess.Popen['screen','./bot_2.py'] subprocess.Popen['screen','./bo
p、 start从文档中,在多处理中,通过创建流程对象,然后调用其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
从文档中,在多处理中,通过创建流程对象,然后调用其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
假设您的bot文件在命令行上运行时执行某些操作,我们可以通过将它们导入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为其指定一个函数,然后动态导入该名称
此处未显示,但只要您不将模块导入父进程,子进程将被迫加载它,这意味着您可以根据需要在单独的进程中反复运行同一个模块。假设您的bot文件在命令行上运行时执行某些操作,我们可以通过将它们导入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为其指定一个函数,然后动态导入该名称
此处未显示,但只要您不将模块导入父进程,子进程将被迫加载它,这意味着您可以在单独的进程中反复运行相同的模块(如果需要)