进程在 PyCharm 中以退出代码 137 结束

Posted

技术标签:

【中文标题】进程在 PyCharm 中以退出代码 137 结束【英文标题】:Process finished with exit code 137 in PyCharm 【发布时间】:2017-09-02 06:00:03 【问题描述】:

当我在 PyCharm 中手动停止脚本时,进程以退出代码 137 结束。但我没有停止脚本。退出码 137 还是有,有什么问题?

Python 版本为 3.6,运行 xgboost.train() 方法时处理完成。

【问题讨论】:

运行脚本时发现CPU负载比较高。 内存使用情况如何?退出代码 137 表示您的进程被SIGKILL(信号 9)杀死。发生这种情况的原因有很多,但通常是由于内存使用过多。 对不起,我有点困惑。是 Python 脚本进程完成了还是 PyCharm 进程完成了? 脚本似乎内存不足。优化脚本后,它可以工作。非常感谢。@umutto @shawe 你能告诉我们你做了什么改变来解决这个问题吗? 【参考方案1】:

退出代码 137 表示您的进程被(信号 9)SIGKILL 杀死。如果您手动停止它 - 这就是您的答案。

如果您没有手动停止脚本并且仍然收到此错误代码,则该脚本已被您的操作系统杀死。在大多数情况下,它是由过多的内存使用引起的。

【讨论】:

【参考方案2】:

根据我的经验

这是因为内存问题。 当我尝试使用 sklearn fit 与完整数据集训练 ml 模型时,它会突然中断并给出,而对于小数据它可以正常工作。

进程以退出代码 137 结束(被信号 9:SIGKILL 中断) 有趣的是,这也没有被 Exception 块捕获

【讨论】:

它没有被捕获,因为它不是python异常。 那怎么解决呢?【参考方案3】:

如果您使用的是 Ubuntu,请增加 SWAP 内存。它会起作用的。使用htop查看SWAP使用情况,满了会报错137。

【讨论】:

欢迎使用 ***。你的回答很有用。感谢您的贡献。可以改善您的答案的几件事是:添加指向 htop 手册和解释如何增加 SWAP 内存的页面的链接,或者在这里自己解释这些事情。不管怎样,谢谢你的贡献。我赞成它。【参考方案4】:

这并不总是内存问题。在我的情况下,subprocess.Popen 被使用,它抛出错误为 137,看起来像 signalKILL,原因绝对不是内存利用率,因为在运行时它几乎没有使用 1% 的内存使用。经过更多调查,这似乎是一个权限问题。我只是将脚本从/home/ubuntu 移到了根目录。

【讨论】:

【参考方案5】:

我有同样的错误。在我的情况下与过多的内存使用有关。在重置/清理我的缓存数据后解决,为每个不再使用的变量添加以下代码:

MyVariableName = None

【讨论】:

您能详细说明一下吗?你的意思是应该插入一行文字,如“MyValue = None”? 我重新编辑了我的答案。我为不再使用的每个变量添加了“变量名称”=None。这会重置您的变量并释放缓存。 您应该使用del myVariableName 来清除变量。这使它不再在范围内并导致它被垃圾收集。【参考方案6】:

我最近在 M1 Mac Mini 上安装 PyCharm 时遇到了这个错误。它伴随着一个错误,说我的 SDK 在编译项目时无效。事实证明这是由于我的 Python 解释器被指向一个奇怪的目录,我不是 100% 会发生这种情况。

我去了 Preferences > Project:yourProject > Python Interpreter 并从下拉列表中选择了一个有效的 SDK(在我的例子中是 Python 3.8)。你会知道这个包是有效的,因为它会用包填充下面的包列表。

同样,不确定安装时是如何发生的,但这解决了它。

【讨论】:

【参考方案7】:

就我而言,我的 RAM 用完了,无论是真实的还是虚拟的。

将您的数据分成小块或扩展您的虚拟内存。

我选择后者。

以下 scipts 适用于我的 ubuntu 20.04 TLS。

# disable the use of swap
sudo swapoff -a

# create the SWAP file. Make sure you have enough space on the hard disk.
# here is my size, the total size is bs*count B
sudo dd if=/dev/zero of=/swapfile bs=1024 count=136314880 status=progress
# output:
# 139458259968 bytes (139 GB, 130 GiB) copied, 472 s, 295 MB/s
# 136314880+0 records in
# 136314880+0 records out
# 139586437120 bytes (140 GB, 130 GiB) copied, 472.372 s, 296 MB/s

# Mark the file as SWAP space:
sudo mkswap /swapfile
# output:
# Setting up swapspace version 1, size = 130 GiB (139586433024 bytes)
# no label, UUID=25a565d9-d19c-4913-87a5-f02750ab625d

# enable the SWAP.
sudo swapon /swapfile

# check if SWAP is created
sudo swapon --show
# output:
# NAME      TYPE SIZE USED PRIO
# /swapfile file 130G   0B   -2

# Once everything is set, you must set the SWAP file as permanent, else you will lose the SWAP after reboot. Run this command:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

运行进程后,内存会增长。

这是我的:

祝你好运!

reference 1,reference 2

【讨论】:

【参考方案8】:

我的 python 进程被 137 错误代码杀死,因为我的 Docker for Windows 内存限制设置得太低。

【讨论】:

【参考方案9】:
    如果其他人在 mac 上安装 pycharm 并在执行简单的 print('test') 命令时得到代码 137 in PyCharm 错误,那肯定是因为创建的新项目中存在解释器的路径。李> 我认为该错误是因为 python 是通过 brew 安装的,并且它没有显示在“Python X.YZ /Library/Frameworks/Python.framework/Versions/X.YZ/bin/pythonX”路径中 使用 brew 卸载已安装的 python 版本,然后手动安装。 现在它会出现在“Preferences-> Project -> Python Interpreter -> Gear symbol -> add base interpreter”下的解释器路径下,将其指向/Library/Frameworks/....路径下

【讨论】:

【参考方案10】:
    点击齿轮图标。 然后将 Poetry 环境设置为 Python 3.x。 点击确定并应用。

现在代码可以运行而不会显示任何错误!

【讨论】:

以上是关于进程在 PyCharm 中以退出代码 137 结束的主要内容,如果未能解决你的问题,请参考以下文章

为啥它在控制台进程中以退出代码 0 结束而不是打印 'sen' 变量这样说? [复制]

“进程以退出代码 1 结束”是啥意思?

数据帧合并给出“进程以退出代码 137 完成(被信号 9 中断:SIGKILL)”

尽管正确打印出所有输出,但程序未在 Java 中以退出代码 0 结束

pycharm 随机发生错误:进程以退出代码 134 完成(被信号 6 中断:SIGABRT)

Pycharm 无法连接到控制台进程退出代码 -1 远程解释器