繁体   English   中英

大列表初始化无声无息地失败

[英]large list initialisation failing silently

我正在尝试初始化一个任意长的列表,但是我这样做的方式默默地失败了。 编码:

a_long_list = [True] * (1000000011)

我试图尝试/捕获异常但没有成功。 理想情况下,如果初始化成功会很好,但最重要的是检测是否失败。 环境:我使用的是 python 3.8.5,不幸的是 numpy 在这个环境中不可用我也尝试了数组但没有成功(也默默地失败了)。

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

您尝试使用array.array是首先创建一个与list内存使用量等效的tuple ,因此峰值内存使用量仍然太高。 乘以由短tuple而不是tuple构成的短array

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM