You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python程序运行更快?运行出现killed 9错误如何解决

问题原因与修复方案

错误触发原理

killed 9 是Linux系统下OOM(内存溢出)杀手的强制终止信号,你的代码触发了死循环,导致内存无限上涨最终被系统主动杀死。

代码核心BUG

while循环的判断顺序存在逻辑错误:

  • 所有整数必然满足n%2==0或者n%2==1两个条件之一,你写在最后的elif n<=0分支永远不会被执行
  • 循环终止条件永远触发不了,N数组会无限追加元素,直到占满内存

修复后的可运行代码

n,m,o = 1766445895,1,1
N,M,O=[],[],[]
O.append(o)
M.append(m)
N.append(n)
go_on = True
while go_on:
    # 先判断终止条件,放在最前面才会被执行
    if n <= 0:
        go_on = False
        break
    if n % 2 == 0:
        n=(n-2)//2
        N.append(n)
    elif n % 2 == 1:
        n=(n-1)//2
        N.append(n)

for i in range(len(N)):
    if N[i] % 2 == 0:
       o=m+o
       O.append(o)
       M.append(m)
    if N[i] % 2 == 1:
       m=o+m
       O.append(o)
       M.append(m)

for i in range(len(N)):
    if i < 10:
        print('{:d}:  n = {:10d}, q = {:6d}/{:6d}'.format(i, N[i],O[i],M[i]))
    else:
        print('{:d}: n = {:10d}, q = {:6d}/{:6d}'.format(i, N[i],O[i],M[i]))

另外你代码里导入了numpy但全程没有使用,可以直接删掉import语句减少不必要的加载开销。

可选优化建议

你不需要完整存储N数组所有元素,分解自然数的过程可以和分子分母计算合并,全程只需要几个变量即可完成计算,内存占用可以降到几乎为0,即使输入极大的自然数也不会出现内存问题。

内容的提问来源于stack exchange,提问作者J J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:45:04