在 Ubuntu 18 上建立具有「uint8」資料類型的大型 NumPy數組時,您可能會遇到以下問題:遇到錯誤:
numpy.core._exceptions.MemoryError: Unable to allocate array with shape and data type uint8
儘管系統有足夠的可用內存,但在 MacOS 上沒有遇到相同的問題。
此問題的根本原因是作業系統的過量使用處理模式。預設情況下,過度使用是禁用的,這意味著核心將拒絕超出可用記憶體的分配。
要解決這個問題:
啟用積極過量使用後,即使超出物理內存,系統也允許分配。這是因為核心預計只有一小部分分配的記憶體會被主動使用。
雖然積極的過量使用可以解決分配問題,但應謹慎使用:
啟用積極過度使用,以下程式碼應該運作:
import numpy as np a = np.zeros((156816, 36, 53806), dtype='uint8') print(a.nbytes) # Output: 303755101056
以上是為什麼我無法在 Ubuntu 上建立大型 NumPy 數組,以及如何修復記憶體分配錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!