2014-01-13 97 views
-1

很顯然,Python中不能有無限的內存。我正在編寫一個腳本來創建字典列表。但是每個列表有250K到6M的對象(有6個列表)。Python內存限制

有沒有一種方法可以實際計算(可能基於機器的RAM)運行腳本所需的最大內存和內存?

實際的問題,我碰到:

在運行填充有1.25-1.5億詞典列表,當它擊中1.227的腳本之一......它只是停止,但沒有返回錯誤獨處MemoryError。所以我甚至不確定這是否是內存限制。我有打印語句,所以我可以觀察正在發生的事情,並且它似乎永遠緩衝,因爲沒有任何內容正在打印,直到該特定部分,代碼每秒運行幾千行。 關於什麼讓它停止的任何想法?這是記憶還是別的嗎?

+1

您必須查看每個列表中存儲的對象以及需要佔用多少空間。 'sys.getsizeof'應該讓你開始 – inspectorG4dget

+0

這個特定列表中的每個對象從'sys.getsizeof(object)'返回'72' –

+0

@ inspectorG4dget我怎樣才能使用這些信息來確定這是停止的原因。如果這有什麼區別,我有4GB的內存。 –

回答

2

如果您需要存儲多個對象,則需要將它們存儲在磁盤上,而不是存儲器中。 考慮使用數據庫

如果您導入sys模塊,您將有權訪問功能sys.getsizeof()。您必須查看列表中的每個對象,併爲每個字典計算每個鍵的值。有關此更多信息,請參閱此前一個問題 - In-memory size of a Python structure