如何用Shell脚本实现A.py运行期间循环并行执行B.py
解决方案
直接使用如下Bash脚本即可实现需求,兼容绝大多数主流Linux、macOS环境:
#!/bin/bash # 后台启动A.py,记录其进程PID python3 A.py & A_PID=$! # 循环判断A.py是否仍在运行,未结束则持续后台启动B.py while ps -p "$A_PID" > /dev/null 2>&1; do python3 B.py & # 按需调整B.py的启动间隔,不加此行会无间隔启动B,极易占用满系统资源 sleep 1 done # 可选:A运行结束后等待所有已启动的B.py执行完成再退出主脚本 # wait
关键逻辑说明
&标识将进程放到后台运行,不会阻塞后续命令执行- 内置变量
$!会自动保存最近一个后台进程的PID,用于后续判断A.py的运行状态 ps -p $A_PID用于检查指定PID的进程是否存活,输出重定向到/dev/null是为了避免打印多余的进程信息- 若你的环境中Python调用命令为
python而非python3,直接替换脚本中对应的命令即可 - 若需要给A.py、B.py传递运行参数,直接写在脚本文件名后即可,例如
python3 A.py --config config.yaml &
内容的提问来源于stack exchange,提问作者Aydin Abiar
相关产品推荐
相关产品推荐

