python problem 大檔案的讀取

2021-08-08 14:36:37 字數 1143 閱讀 8660

博主在使用glove840b詞向量的時候,遇到的一些坑。這個詞向量大概有5.25個g容量,並且我需要按照行來進行處理。然後我直接用了

f = open(path,encoding="utf-8").readlines()
然後記憶體就炸了。我可是16g的記憶體呢。

1.with

with open(path, encoding="utf-8") as f:

for line in f:

dosomething()

只占用4.6m記憶體

注意這種方法每一行最後會有乙個』\n』

there should be one – and preferably only one – obvious way to do it.

2.直接遍歷
f = open(path, encoding="utf-8")

for line in f:

dosomething()

只占用4.6m記憶體

注意這種方法每一行最後會有乙個』\n』

這裡我想說用with和直接每次讀一行進行遍歷,實際上是一樣的效果的。只是with有一些好處,我打算下一章專門寫一下with。先舉個列子,用with,就不用在讀檔案結束的時候寫f.close()了。

3.使用readlines()

f = open(path, encoding="utf-8").readlines()

for line in f:

dosomething()

這種方法會把整個檔案一次性載入在記憶體中,對於小檔案來說,處理起來,速度會更快。

但是載入5.25的g的文字的時候,記憶體直接就爆滿了。

4.使用yield配合readline盡量使用with的方法吧。

但是如果文章真的不是很大的話,或者記憶體足夠大的話,還是用readlines比較好,速度能夠提公升好多。可以具體比較一下。

參考

Mike Cohn 2019十大博文

10 團隊期望scrummaster做的六件事 六件事包括 讚揚 支援 對scrum規則的開放心態等。9 四招保持產品列表小和可管理 第一招是刪除你永遠都不會做的事。8 通過追蹤buffer的使用來管理迭代中的干擾 需要在迭代中處理顯著干擾的團隊可以參考。7 工作故事 job story 是使用者故...

js 即時上傳php js php分片上傳大檔案

這篇文章介紹的內容是關於js php分片上傳大檔案,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下 1.理解部分 服務端為什麼不能直接傳大檔案?跟php.ini裡面的幾個配置有關upload max filesize 2m php最大能接受的檔案大小 post max size 8m ...

十年莽撞IT路 文 馮大輝

博文視點周筠老師多次叮囑我寫點關於個人成長的心得,頗感壓力。回首在it這個行業也差不多有10年了,沒做成什麼驚人的事業,也沒怎麼賺到大把的鈔票,如果冒充什麼成功導師大談人生感悟豈不是會被讀者朋友笑掉大牙,當然引來板磚也說不定。如果說有可取的,恐怕也就是自己莽撞地混入這個行業,陰差陽錯地一路走過來,有...