news 2026/4/11 4:01:30

【kill】在容器中使用 nohup 启动 Python 训练脚本后,如何正确停止进程?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【kill】在容器中使用 nohup 启动 Python 训练脚本后,如何正确停止进程?

​ 在服务器或 Docker 容器中跑深度学习训练时,nohup几乎是标配操作:(可以参考之前写的文章【在容器中运行长时间 Python 任务:SSH 断开也不怕】

nohuppython scripts/frozen_backbone_train.py>logs/frozen_finetune.log2>&1&

​ 但问题也随之而来:这个后台跑起来的 Python 进程,到底该怎么安全、彻底地停掉?

​ 本文结合一次PyTorch 训练 + DataLoader 多进程的真实排查过程,完整记录正确的 kill 思路。

一、先找到真实在跑的进程

​ 第一步永远不是kill -9,而是确认进程结构

psaux|grephomo_with_vit_frozen.py

​ 可能会看到类似输出:

root1652... python frozen_backbone_train.py root2424... python frozen_backbone_train.py root2425... python frozen_backbone_train.py root2426... python frozen_backbone_train.py...

​ 这时候很多人会懵:为什么同一个脚本会有一堆 Python 进程?

二、为什么会有多个 python 进程?

​ 这是PyTorch 非常典型的行为

2.1 主进程(训练主逻辑)

root1652... python frozen_backbone_train.py
  • 负责:模型 forward / backward / optimizer.step
  • 通常:
    • 运行时间很长
    • CPU / GPU 占用明显
  • 这是你真正要 kill 的进程

2.2 子进程(DataLoader workers)

root2424~2431... python frozen_backbone_train.py

​ 这些通常是:

DataLoader(..., num_workers > 0)
  • 拉起的数据加载子进程,特征非常明显:
    • 一次性出现一串
    • PID 连号
    • CPU 占用相近
    • 内存结构几乎一样
  • 结论:多进程 ≠ 多个训练任务,而是一个训练任务 + 多个数据加载 worker

三、正确的 kill 姿势(推荐)

3.1 方式一:只 kill 主进程(最干净)

kill1652
  • 大多数情况下:主进程退出,所有 DataLoader 子进程会被自动回收

  • 如果进程没有立刻退出

    kill-91652

3.2 方式二:直接按脚本名全部清场

  • 当你确认这个脚本已经不需要了,可以直接:

    pkill-9 -f frozen_backbone_train.py
  • -f:匹配完整命令行

  • 会同时 kill 主进程 + 所有子进程

  • 注意:如果你同时跑了多个同名脚本,这一招会“一锅端”。

四、如何确认真的 kill 干净了?

4.1 再查一次进程

psaux|grepfrozen_backbone_train.py

如果只剩下:

grep--color=auto frozen_backbone_train.py

说明进程已经全部退出

4.2 如果使用 GPU,确认显存释放

nvidia-smi
  • 没有 python 占用显存 → OK
  • 有残留 → 继续kill -9 <pid>

五、小结

  • nohup启动的 Python 进程 ≠ 只有一个进程
  • PyTorch 的DataLoader(num_workers > 0)会产生多个子进程
  • 正确做法是:
    • 优先 kill 主进程
    • 或使用pkill -f一次性清理
  • 养成记录 PID 的习惯,可以极大降低维护成本
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/9 23:57:13

2.2 高可用架构揭秘:如何实现MySQL秒级故障切换?

2.2 高可用架构揭秘:如何实现MySQL秒级故障切换? 📚 学习目标 通过本节学习,你将掌握: ✅ MySQL高可用架构的实现原理和核心机制 ✅ 业界主流高可用方案(MHA、Keepalived、MGR等)的对比 ✅ 秒级故障切换的技术要点和实现方法 ✅ 高可用架构的设计原则和最佳实践 ✅ 故…

作者头像 李华
网站建设 2026/4/7 9:31:07

直播录制神器,绝了

今天给大家带来一款上线没多久的直播录制工具&#xff0c;有需要的小伙伴及时下载收藏。 软件介绍 今天介绍的这款直播录制工具StreamCap是一款支持某音、某手、某鱼、某站等国内外的主流直播视频网站。 这款软件在GitHub上开源免费&#xff0c;点击【开始录制】进入到录制设置…

作者头像 李华
网站建设 2026/4/7 18:27:30

打破中心枷锁:P2P网络如何用“去中心化”重构互联网通信

在传统互联网中&#xff0c;我们发送一封邮件、观看一部视频&#xff0c;数据都要经过中心服务器的中转。这种“客户端-服务器”模式如同单行道&#xff0c;一旦服务器宕机或被攻击&#xff0c;整个网络就会瘫痪。而P2P&#xff08;Peer-to-Peer&#xff0c;对等网络&#xff0…

作者头像 李华
网站建设 2026/4/8 11:48:35

java+vue基于springboot传统手工艺品文化展示分享平台的设计与实现_551klg69

目录基于SpringBoot和Vue的传统手工艺品文化展示分享平台技术架构设计核心功能实现系统特色与创新开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于SpringBoot和Vue的传统手工艺品文化展示分享平台 该平台旨在通过现代技术手…

作者头像 李华
网站建设 2026/4/1 23:37:48

深入PyTorch张量操作:超越基础API的设计哲学与高效实践

深入PyTorch张量操作&#xff1a;超越基础API的设计哲学与高效实践 摘要 在深度学习领域&#xff0c;PyTorch以其动态计算图和直观的API设计赢得了广泛赞誉。然而&#xff0c;许多开发者仅停留在表面API的使用层面&#xff0c;未能深入理解其核心数据结构——张量&#xff08;T…

作者头像 李华
网站建设 2026/3/30 1:43:57

101页满分PPT | 电力行业集团信息化战略规划方案

大型电力装备集团普遍面临信息化发展困境。集团总部与下属企业信息化联系薄弱&#xff0c;数据和信息系统分散&#xff0c;形成大量信息孤岛。各企业独立建设系统&#xff0c;缺乏统一规划&#xff0c;导致业务流程割裂。集团层面缺乏有效管控手段&#xff0c;无法实时掌握整体…

作者头像 李华