我有一个 python 程序,我想同时运行多个具有不同参数的实例。这些实例彼此之间不进行通信。在单独的终端中运行每个实例太乏味了。我考虑使用多处理模块将每个实例作为单独的进程运行,但是我希望能够随时停止和重新启动某些单独的实例,而不会中断其他正在运行的实例。是否有任何流程管理器或类似的东西可以用来做到这一点?
是的,您可以使用 Python 的多处理模块和进程管理器(如 Supervisor 或 PM2)的组合来实现此目的。以下是使用这两种选项的方法:
使用主管 Supervisor 是一个进程控制系统,允许您监视和控制类 UNIX 操作系统上的多个进程。
安装主管:
pip install supervisor
创建主管配置: 创建名为supervisord.conf的文件并添加以下配置:
[supervisord]
logfile=supervisord.log
pidfile=supervisord.pid
[program:your_program_1]
command=python your_script.py arg1 arg2
directory=/path/to/your/program
autostart=true
autorestart=true
stderr_logfile=/path/to/log/your_program_1.err.log
stdout_logfile=/path/to/log/your_program_1.out.log
[program:your_program_2]
command=python your_script.py arg3 arg4
directory=/path/to/your/program
autostart=true
autorestart=true
stderr_logfile=/path/to/log/your_program_2.err.log
stdout_logfile=/path/to/log/your_program_2.out.log
;根据需要添加更多程序部分 启动主管:
supervisord -c supervisord.conf
控制单个程序: 您可以使用supervisorctl命令启动、停止和重新启动单个程序:
supervisorctl -c supervisord.conf stop your_program_1
supervisorctl -c supervisord.conf start your_program_1
supervisorctl -c supervisord.conf restart your_program_1
使用PM2(流程管理器2) PM2 是 Node.js 应用程序的进程管理器,但它也可以管理 Python 脚本。
安装PM2:
npm install pm2 -g
使用 PM2 启动您的 Python 程序:
pm2 start your_script.py --name your_program_1 -- arg1 arg2
pm2 start your_script.py --name your_program_2 -- arg3 arg4
控制单个程序: 您可以使用 pm2 命令启动、停止和重新启动单个程序:
pm2 stop your_program_1
pm2 start your_program_1
pm2 restart your_program_1