为了账号安全,请及时绑定邮箱和手机立即绑定

大列表初始化无提示地失败

大列表初始化无提示地失败

芜湖不芜 2023-12-26 16:15:32
我正在尝试初始化一个任意的长列表,但是我这样做的方式却默默地失败了。代码:a_long_list = [True] * (1000000011)我尝试尝试/捕获异常但没有成功。理想情况下,如果初始化成功就好了,但最重要的是检测初始化是否失败。环境:我使用的是 python 3.8.5,不幸的是 numpy 在这个环境中不可用我也尝试了数组,但没有成功(也默默地失败了)。a_long_list = array.array('b', (1,)*1000000011)
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

您尝试使用的方法array.array是首先创建tuple与您的内存使用量相当的内存使用量list,因此峰值内存使用量仍然太高。array乘以由 Short 组成的Short tuple,而不是tuple

a_long_list = array.array('b', (1,)) * 1000000011

array.array然后将有效地生成更长的数组,完全使用内存高效的 C 级类型(每个元素仅占用一个字节,而不是指针,通常每个元素 4-8 个字节;如果您随后开始分配范围之外的值,则更多小int缓存),没有您不使用的巨大临时缓存。


查看完整回答
反对 回复 2023-12-26
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信