Python程序出现‘Killed’提示的原因及确认方法
问题原因及确认方法
核心原因
你的Python程序被系统的**OOM Killer(内存不足杀手)**终止了,本质是程序实际占用的内存超过了系统可用空闲内存:
- numpy默认使用
int64类型存储整数,每个元素占8字节。你创建的x = np.arange(1_000_000_000)数组,内存占用为1e9 * 8 = 8e9 字节 ≈ 7.45 GiB。 - 执行
x + x时,numpy会创建一个全新的同尺寸数组存储计算结果,这又会占用额外的7.45 GiB内存。 - 加上Python解释器、系统后台进程本身占用的内存(通常至少几百MB到1GiB),总内存需求已经超过了你电脑的15.6 GiB可用内存,触发系统的OOM Killer,直接终止Python进程。
确认方法
1. 查看系统OOM Killer日志
在终端执行以下命令,查看系统是否因为内存不足杀死了Python进程:
dmesg | grep -i kill # 或者用journalctl(适用于systemd系统) journalctl -k | grep -i oom
如果日志中出现类似Out of memory: Killed process [PID] (python) total-vm:...的内容,就可以确认是OOM Killer导致的。
2. 验证内存计算
在Python中单独测试数组的内存占用:
import numpy as np x = np.arange(1_000_000_000) print(f"单个数组内存占用: {x.nbytes / 1024**3:.2f} GiB")
执行后会输出单个数组的内存大小,再加上计算过程中临时数组的占用,就能明确总内存需求。
3. 小规模测试验证
把数组规模缩小(比如改成100_000_000),运行程序:
import datetime import numpy as np x = np.arange(100_000_000) start = datetime.datetime.now() (x + x).sum() print(datetime.datetime.now() - start)
如果程序能正常运行,再逐步增大数组规模,观察内存使用情况(可以用htop实时监控),当规模增大到某个值时再次出现Killed,就进一步验证了内存不足的问题。
内容的提问来源于stack exchange,提问作者Test
相关产品推荐
相关产品推荐

