摘要:讀文件的方式多種多樣,但是當需要讀取一個大文件的時候,不同的讀取方式會有不一樣的效果??偨Y(jié)以上方法僅供參考,公認的大文件讀取方法還是三最好。原文地址文件讀取的不同方法比對我的博客時空路由器
Python 讀文件的方式多種多樣,但是當需要讀取一個大文件的時候,不同的讀取方式會有不一樣的效果。
場景逐行讀取一個 2.9G 的大文件
CPU i7 6820HQ
RAM 32G
方法對每一行的讀取進行一次分割字符串操作
以下方法都使用 with...as 方法打開文件。
方法一 最通用的讀文件方式with 語句適用于對資源進行訪問的場合,確保不管使用過程中是否發(fā)生異常都會執(zhí)行必要的“清理”操作,釋放資源,比如文件使用后自動關閉、線程中鎖的自動獲取和釋放等。
with open(file, "r") as fh: for line in fh.readlines(): line.split("|")
運行結(jié)果: 耗時 15.4346568584 秒
系統(tǒng)監(jiān)視器中顯示內(nèi)存從 4.8G 一下子飆到了 8.4G, fh.readlines() 將讀取的所有行數(shù)據(jù)存到內(nèi)存,這種方法適合小文件。
with open(file, "r") as fh: line = fh.readline() while line: line.split("|")
運行結(jié)果: 耗時 22.3531990051 秒
內(nèi)存幾乎沒有變化,因為內(nèi)存中只存取一行的數(shù)據(jù),但是時間明顯比上一次的長,對于進一步處理數(shù)據(jù)來說效率不高。
with open(file) as fh: for line in fh: line.split("|")
運行結(jié)果: 耗時 13.9956979752 秒
內(nèi)存幾乎沒有變化,速度也比方法二快。
for line in fh 將文件對象 fh 視為可迭代的,它自動使用緩沖的 IO 和內(nèi)存管理,因此您不必擔心大文件。這是很 pythonic 的方式!
for line in fileinput.input(file): line.split("|")
運行結(jié)果: 耗時 26.1103110313 秒
內(nèi)存增加了 200-300 MB,速度是以上最慢的。
以上方法僅供參考,公認的大文件讀取方法還是三最好。但是具體情況還是要根據(jù)機器的性能、處理數(shù)據(jù)的復雜度。
原文地址:Python 文件讀取的不同方法比對
我的博客:時空路由器
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44385.html
摘要:本文講解了如何使用,基于與實現(xiàn)人臉解鎖的功能。上接上一段程序讀取使用創(chuàng)建獲取進度確認到目前為止,你應該已經(jīng)可以就給定的兩張圖片比對是否是同一個人了。 近幾天微軟的發(fā)布會上講到了不少認臉解鎖的內(nèi)容,經(jīng)過探索,其實利用手頭的資源我們完全自己也可以完成這樣一個過程。 本文講解了如何使用Python,基于OpenCV與Face++實現(xiàn)人臉解鎖的功能。 本文基于Python 2.7.11,Win...
摘要:通過內(nèi)置的模塊實現(xiàn)對文件的解壓,加點料完成口令破解模塊基本使用使用壓縮文件創(chuàng)建一個文件對象,壓縮是需要把改為將文件寫入文件中,即將文件壓縮將文件對象關閉使用解壓文件解壓準備階段首先你需要一個壓縮文件,并且給它加上密碼,樣子長成這樣然后你就成 通過Python內(nèi)置的zipfile模塊實現(xiàn)對zip文件的解壓,加點料完成口令破解 zipfile模塊基本使用 使用zipfile壓縮文件 imp...
摘要:今天推出了一個名叫的開源工具,用深度神經(jīng)網(wǎng)絡來從測序數(shù)據(jù)中快速較精確識別堿基變異位點。今天,團隊,聯(lián)合同屬于旗下的生命科學兄弟公司,用了兩年多時間,研發(fā)出了一個名叫的開源工具,專門用深度神經(jīng)網(wǎng)絡來識別結(jié)果中測序數(shù)據(jù)里這些堿基變異位點。 Google今天推出了一個名叫DeepVariant的開源工具,用深度神經(jīng)網(wǎng)絡來從DNA測序數(shù)據(jù)中快速較精確識別堿基變異位點。學科研究的革命性進展,特別是基因...
摘要:將用戶登陸信息綁定數(shù)據(jù)庫要求將用戶登陸時的信息,發(fā)送至后臺與數(shù)據(jù)庫進行比對,來判斷用戶是否可登陸文件,用來創(chuàng)建遠程連接的類主程序創(chuàng)建連接判斷用戶名是否存在返回的是語句查詢結(jié)果的個數(shù)如果為,沒有查到。 將用戶登陸信息綁定數(shù)據(jù)庫 要求將用戶登陸時的信息,發(fā)送至后臺與數(shù)據(jù)庫進行比對,來判斷用戶是否可登陸 #config.py文件,用來創(chuàng)建遠程連接的類 class DB: HOST =...
閱讀 832·2023-04-26 00:37
閱讀 719·2021-11-24 09:39
閱讀 2146·2021-11-23 09:51
閱讀 3812·2021-11-22 15:24
閱讀 743·2021-10-19 11:46
閱讀 1876·2019-08-30 13:53
閱讀 2426·2019-08-29 17:28
閱讀 1325·2019-08-29 14:11