[英]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.