我對python非常陌生。在python腳本中,我需要檢查輸入字符串是否存在於集合'titles'中;我從新行加載文件'標題'中分隔的字符串。它消耗巨大的記憶。我之所以選擇儲存,是因爲稍後有if inputstring in titles:
。從文件內存優化設置的Python
Line # Mem usage Increment Line Contents
================================================
1 6.160 MiB 0.000 MiB @profile
2 def loadtitles():
3 515.387 MiB 509.227 MiB titles = open('titles').read().split()
4 602.555 MiB 87.168 MiB titles = set(titles)
Q1。有沒有其他對象類型更有效地存儲這些大數據的內存?
我可以想出的一個解決方案是如果我將文件加載爲字符串,它會消耗與文件大小完全相同的內存;這是100%最佳的內存消耗。
Line # Mem usage Increment Line Contents
================================================
1 6.160 MiB 0.000 MiB @profile
2 def loadtitles():
3 217.363 MiB 211.203 MiB titles = open('titles').read()
然後我可以做if inputstring+'\n' in titles:
Q2。有更快的選擇嗎?
使用[dict](http://i.imgur.com/Ghf56HY.png)或擱置,它可以節省大約128 MiB的內存。你可以爲此提出任何改進建議? – Nexu
@Nexu,什麼內存閾值會滿足你?你不能無止境地降低內存佔用,因爲你永遠不會達到滿意的結果。 –
字典將爲我做(@ 500M內存)。我只是在問,是否可以用任何其他類似字典的對象以某種方式使代碼更高效。 – Nexu