我正在嘗試初始化一個任意的長列表,但是我這樣做的方式卻默默地失敗了。代碼: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
緩存),沒有您不使用的巨大臨時緩存。
添加回答
舉報
0/150
提交
取消