這篇文章將為大家詳細講解有關python多線程如何分塊讀取文件,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
十載的納雍網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。網(wǎng)絡營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整納雍建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“納雍網(wǎng)站設計”,“納雍網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。具體內(nèi)容如下
# _*_coding:utf-8_*_ import time, threading, ConfigParser ''' Reader類,繼承threading.Thread @__init__方法初始化 @run方法實現(xiàn)了讀文件的操作 ''' class Reader(threading.Thread): def __init__(self, file_name, start_pos, end_pos): super(Reader, self).__init__() self.file_name = file_name self.start_pos = start_pos self.end_pos = end_pos def run(self): fd = open(self.file_name, 'r') ''' 該if塊主要判斷分塊后的文件塊的首位置是不是行首, 是行首的話,不做處理 否則,將文件塊的首位置定位到下一行的行首 ''' if self.start_pos != 0: fd.seek(self.start_pos-1) if fd.read(1) != '\n': line = fd.readline() self.start_pos = fd.tell() fd.seek(self.start_pos) ''' 對該文件塊進行處理 ''' while (self.start_pos <= self.end_pos): line = fd.readline() ''' do somthing ''' self.start_pos = fd.tell() ''' 對文件進行分塊,文件塊的數(shù)量和線程數(shù)量一致 ''' class Partition(object): def __init__(self, file_name, thread_num): self.file_name = file_name self.block_num = thread_num def part(self): fd = open(self.file_name, 'r') fd.seek(0, 2) pos_list = [] file_size = fd.tell() block_size = file_size/self.block_num start_pos = 0 for i in range(self.block_num): if i == self.block_num-1: end_pos = file_size-1 pos_list.append((start_pos, end_pos)) break end_pos = start_pos+block_size-1 if end_pos >= file_size: end_pos = file_size-1 if start_pos >= file_size: break pos_list.append((start_pos, end_pos)) start_pos = end_pos+1 fd.close() return pos_list if __name__ == '__main__': ''' 讀取配置文件 ''' config = ConfigParser.ConfigParser() config.readfp(open('conf.ini')) #文件名 file_name = config.get('info', 'fileName') #線程數(shù)量 thread_num = int(config.get('info', 'threadNum')) #起始時間 start_time = time.clock() p = Partition(file_name, thread_num) t = [] pos = p.part() #生成線程 for i in range(thread_num): t.append(Reader(file_name, *pos[i])) #開啟線程 for i in range(thread_num): t[i].start() for i in range(thread_num): t[i].join() #結(jié)束時間 end_time = time.clock() print "Cost time is %f" % (end_time - start_time)
關于“python多線程如何分塊讀取文件”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
當前標題:python多線程如何分塊讀取文件-創(chuàng)新互聯(lián)
瀏覽路徑:http://muchs.cn/article2/dsgoic.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設、面包屑導航、網(wǎng)站內(nèi)鏈、ChatGPT、App設計、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容