Python 脚本完成但进程仍然存在

问题描述

我不知道这个问题会不会太宽泛,但我会试一试。

我正在运行一个相当大的 python 项目,它有大量的依赖项、动态导入等。所以很难找到我的问题的根本原因。该项目是一个使用 Tensorflow(目前为 1.14)的深度学习项目。问题是在一切都运行之后,大约五分之一的运行会卡住。对于卡住的作业,如果我运行 ps aux(处于可互通的睡眠状态),我仍然可以看到进程,如果我使用 strace,我看不到任何退出代码被发送。包装脚本(它是 CI 链的一部分,仍然认为 python 正在运行并且永远不会完成。

添加 exit(0) 无济于事(但该行之后的任何内容都不会被执行)。我已经尝试查看与多处理和文件处理相关的所有内容,但这似乎不是代码的问题。现在我怀疑 Tensorflow 中的某些东西。 Python 在 cgroup 中执行,我在那里找不到任何其他进程。

所以,我有两个问题:

  1. 我能以某种方式检测为什么 python 没有完成吗?
  2. 我可以强制 python 退出吗?我知道我可以获取 pid,然后简单地从 python 本身中终止进程,但这意味着非零退出代码与 CI 系统无法正常工作,将其解释为失败。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)