Re: [問題] 大量文字輸出文字檔
※ 引述《largesperm (reindeer)》之銘言:
: 請教一下
: 假設我現在要把一些結果輸出為文字檔
: 我先把所有的文字先 append 到空 list
: 最後才一次 "".join()
: 如果我想要輸出的結果太多了
: 他會顯示 MemoryError
: 可是我看 list 裡面的東西也沒有到非常多 大概幾百萬個元素
: 每一行大概就一個螢幕寬
: 我沒記錯的話 32bits 的 list 應該可以塞到億個元素
: 沒有出現 MemoryError 的檔案大概 100 多 mb
: 出現 MemoryError 的地方不是在輸出的那一刻
: 而是在 append 的時候出現
: 不曉得有什麼方式可以改善
: 謝謝
幾百萬個?!
這可以簡單算一下,假設 list 塞一百萬個 element 來說,在 32-bit Python 環境,
這個 list 本身就要用掉 4 MB(尚未算這些 element 所使用的記憶體量)。
假如你使用 Python 3,list 內的 element 是 str object,若這一百萬個 str
object 都是長度為 1 的字串,那麼"至少"要用掉 2 MB or 4 MB(視 sys.maxunicode
的值而定),你說每個 element(str)長度大概是一個螢幕寬,比較保守來算為 100
字元,那就是用掉 200 or 400 MB。
在 join 那一刻,瞬間記憶體用量要再多一倍(400 or 800 MB)。
這只是以 100 萬來算,假如那 list 塞到 500 萬個,就會達到 2 or 4 GB。
*這些計算尚未考慮實作 str object 的 overhead。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.232.35
※ 編輯: sbrhsieh 來自: 218.173.232.35 (09/15 18:22)
推
09/15 18:46, , 1F
09/15 18:46, 1F
→
09/15 18:47, , 2F
09/15 18:47, 2F
→
09/15 18:47, , 3F
09/15 18:47, 3F
討論串 (同標題文章)