最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Python讀取文件的四種不同方法比對(duì)

 更新時(shí)間:2017年05月18日 14:11:09   作者:時(shí)空路由器  
Python的文本處理是經(jīng)常碰到的一個(gè)問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Python讀取文件的幾種不同方法比對(duì)的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家理解和學(xué)習(xí),需要的朋友們下面來(lái)一起看看吧。

前言

大家都知道Python 讀文件的方式多種多樣,但是當(dāng)需要讀取一個(gè)大文件的時(shí)候,不同的讀取方式會(huì)有不一樣的效果。下面就來(lái)看看詳細(xì)的介紹吧。

場(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 的方式!

方法四 fileinput 模塊

for line in fileinput.input(file):
 line.split("|")

運(yùn)行結(jié)果: 耗時(shí) 26.1103110313 秒

內(nèi)存增加了 200-300 MB,速度是以上最慢的。

總結(jié)

以上方法僅供參考,公認(rèn)的大文件讀取方法還是三最好。但是具體情況還是要根據(jù)機(jī)器的性能、處理數(shù)據(jù)的復(fù)雜度。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論

凤城市| 五台县| 甘泉县| 灌南县| 济源市| 六盘水市| 涿州市| 海盐县| 荥经县| 习水县| 巍山| 泗水县| 喀什市| 灌云县| 阿拉善右旗| 黔西| 靖宇县| 洪洞县| 同仁县| 湄潭县| 襄城县| 望奎县| 永清县| 崇信县| 沙雅县| 遂宁市| 泗洪县| 且末县| 获嘉县| 临城县| 东安县| 政和县| 昭苏县| 柘荣县| 赫章县| 正定县| 上高县| 嘉峪关市| 南丰县| 柳江县| 大庆市|