簡體   English   中英

np.fromfile()方法有內存限制嗎?

[英]Is there a memory limit on np.fromfile() method?

我試圖在np.fromfile()的幫助下將一個大文件讀入數組,但是,經過一定數量的字節后,它給出了MemoryError。

with open(filename,'r') as file:
    data = np.fromfile(file, dtype=np.uint16, count=2048*2048*63)
    data = data.reshape(63, 2048, 2048)

2048 * 2048 * 63可以正常工作,但是2048 * 2048 * 64不能工作。 如何調試呢? 我想知道這里的瓶頸是什么?

編輯:我在Windows 10上運行,RAM 256GB,它是一個獨立的腳本,64位Python。

Edit2:我按照注釋的建議進行操作,現在在128 * 2048 * 2048處出現錯誤,在127 * 2048 * 2048下可以正常工作。

盡管您相信,但您已經在64位操作系統上安裝了32位版本的Python,這意味着在用戶模式下虛擬地址空間僅限於只有2 GB,並且嘗試分配GB或更大的連續塊可以由於地址空間碎片,很容易失敗。

贈品是您的sys.maxsize ,它只是Python構建中C ssize_t表示的ssize_t 2147483647對應於2**31 - 1 2147483647 ,這是32位Python上的期望值。 64位版本將報告92233720368547758072**63 - 1 9223372036854775807 )。

卸載32位版本的Python,然后下載/安裝64位版本(鏈接到3.7.2下載頁面) (查找安裝程序,將其標記為x86-64, 而不是 x86;文件名將包含amd64 )。 煩人的是, 用於下載Python的主頁默認為Windows提供默認的32位版本,因此您必須向下滾動到特定版本下載頁面的鏈接,單擊最新版本,然后按OS和bittedness向下滾動到完整列表,選擇適當的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM