进程在 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' 变量这样说? [复制]
数据帧合并给出“进程以退出代码 137 完成(被信号 9 中断:SIGKILL)”
尽管正确打印出所有输出,但程序未在 Java 中以退出代码 0 结束