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

为何Python语句ordered_tuple = tuple(range(10**9))会导致电脑卡顿?

为什么tuple(range(10**9))会导致电脑卡顿?

核心原因就是内存被彻底占满,触发了系统的硬盘页面交换:

  • range本身是惰性生成的序列,几乎不占内存,但tuple()会强制把range里的所有元素一次性加载到内存里。
  • 算笔账:109个整数,在64位Python中,每个整数对象至少要占28字节(就算只算对象引用,64位系统下每个引用是8字节,109个就是8GB,已经超过很多笔记本的内存了)。实际内存占用只会更高,直接超出普通笔记本的内存上限(一般8-16GB)。
  • 当物理内存不够用的时候,系统会把内存里的部分数据临时写到硬盘的虚拟内存分区里,这个过程叫页面交换。但硬盘的读写速度比内存慢几百上千倍,电脑自然就会卡顿、响应迟缓,内存占用率也会直接冲到100%。

至于108及以下能正常运行,是因为108个整数的内存需求大概在2.8GB左右,这个量在大多数笔记本的内存承受范围内,不需要触发页面交换,所以不会卡顿。

建议

  • 非必要的话,别把超大range转成tuple,直接用range就行——它支持迭代、索引等绝大多数序列操作,而且几乎不占内存。
  • 如果必须处理这类超大序列,改成分批次处理,每次只加载一小部分数据到内存里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:51:37