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)
假设您的 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 来给它一个,然后动态导入名称。
此处未显示,但只要您不将模块导入父进程,子进程就会强制加载它,这意味着如果需要,您可以在单独的进程中一遍又一遍地运行相同的模块。
| 归档时间: |
|
| 查看次数: |
9891 次 |
| 最近记录: |