ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

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

r
rahul rachh

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

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


B
BrB

{在我的经验中}

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

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


它没有被捕获,因为它不是 python 异常。
那怎么解决呢?
A
ASJ

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


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

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


C
Camilo

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

MyVariableName = None

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

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

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

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


H
Huaiyu Huang

就我而言,我的 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

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

这是我的:

https://i.stack.imgur.com/73KTd.png

祝你好运!

reference 1reference 2


A
Alex Horvath

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


r
rva

如果其他人在 mac 上安装 pycharm 并在执行简单的 print('test') 命令时在 PyCharm 错误中得到代码 137,那肯定是因为创建的新项目中存在解释器的路径。我相信的错误是因为 python 是通过 brew 安装的,并且它没有显示在“Python X.YZ /Library/Frameworks/Python.framework/Versions/X.YZ/bin/pythonX”路径中解决卸载安装的 python 版本使用 brew 然后手动安装它。现在它将出现在“首选项->项目-> Python解释器->齿轮符号->添加基本解释器”下的解释器路径下,将其指向/Library/Frameworks/....路径下


o
ouflak

单击齿轮图标。然后将 Poetry 环境设置为 Python 3.x。单击确定并应用。

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