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