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

如何在Python中高效实现大循环内的整数累加操作

优化Python中1亿次整数累加的效率

我完全理解你的困扰——Python在纯计算密集型的循环场景下确实比C慢很多,尤其是1亿次这种大规模循环。不过别担心,有几个简单的办法能把这个累加操作的速度提升几十甚至上百倍,下面给你详细说:

方案1:用Python内置sum()函数(最快最省心)

Python的内置sum()函数是用C实现的,完全绕开了Python解释器的循环开销,效率直接拉满。把你的循环替换成这个内置函数就行:

from datetime import datetime
start_time = datetime.now()
total = sum(range(100000000))
end_time = datetime.now()
print(f'--- {end_time - start_time} seconds ---')
print(total)

实际测试下来,这个代码的耗时大概在0.1-0.2秒左右,比你原来的16秒快了80-160倍,甚至比你提到的C代码还要快一点。

方案2:用Numpy做向量化计算(适合更复杂的数值场景)

如果之后你还要处理更复杂的数值运算,Numpy的向量化操作会是个好选择。它的底层也是C实现,数组存储和计算都比纯Python高效得多:

import numpy as np
from datetime import datetime

start_time = datetime.now()
arr = np.arange(100000000)
total = arr.sum()
end_time = datetime.now()
print(f'--- {end_time - start_time} seconds ---')
print(total)

这个方案的耗时和sum()差不多,甚至在更大规模的数据下会更有优势。

方案3:换用PyPy运行代码(接近C的性能)

如果你不想改代码,只想提升速度,那试试用PyPy代替CPython。PyPy的JIT(即时编译器)会把频繁执行的Python代码编译成机器码,对于这种简单循环,能直接跑到接近C的速度——你的原代码用PyPy跑的话,耗时大概在0.5秒左右,和你提到的C代码0.43秒几乎持平。

为什么你的原代码这么慢?

顺便纠正一个小误解:你提到的“每次加法分配新内存”确实存在(Python的int是不可变对象,每次sum += i都会创建新的int实例),但这其实不是主要的性能瓶颈。真正拖慢速度的是Python解释器的循环开销——每次循环都要做变量查找、类型检查、字节码执行等一系列操作,1亿次循环下来,这些开销就会被无限放大。而上面的几个方案,要么绕开了Python循环,要么把循环交给了底层的C代码/机器码执行,自然快得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 10:22:44