Python 多線程搜索txt文件的內(nèi)容,并寫入搜到的內(nèi)容(Lock)方法
更新時(shí)間:2019年08月23日 16:44:57 作者:houyanhua1
今天小編就為大家分享一篇Python 多線程搜索txt文件的內(nèi)容,并寫入搜到的內(nèi)容(Lock)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
廢話不多說,直接上代碼吧!
import threading import os class Find(threading.Thread): #搜索數(shù)據(jù)的線程類 def __init__(self,datalist,startIndex,endIndex,searchstr,savefile): #datalist要搜索的內(nèi)容列表,startIndex列表搜索范圍的開始下標(biāo),searchstr要搜索的內(nèi)容 threading.Thread.__init__(self) self.datalist=datalist #要搜索的數(shù)據(jù)的內(nèi)存地址 self.startIndex=startIndex #開始的索引 self.endIndex=endIndex #結(jié)束的索引 self.seachstr=searchstr #需要搜索的數(shù)據(jù) self.savefile=savefile def run(self): self.findlist=[] for i in range(self.startIndex,self.endIndex): line=self.datalist[i].decode("gbk","ignore") #讀取一行 if line.find(self.seachstr)!=-1: print(self.getName(),line,end="") #搜索數(shù)據(jù) self.findlist.append(line) global mutex #多線程共享全局變量(全局鎖) with mutex: #獲取鎖(自動(dòng)釋放鎖) for line in self.findlist: self.savefile.write(line.encode("gbk")) mutex=threading.Lock() #創(chuàng)建一個(gè)鎖 savefile=open("c:\\zhaodao.txt","wb") #搜索到的內(nèi)容寫入該文件 path = "C:\\data1.txt" #要搜索的文件 file = open(path, "rb") datalist = file.readlines() # 全部讀入內(nèi)存 lines=len(datalist) #所有的行數(shù) searchstr=input("輸入要查詢的數(shù)據(jù)") N=10 #開啟10個(gè)線程 threadlist=[] #線程列表 # 97 9 0-1000000 1000000-2000000 2000000-3000000 for i in range(0,N-1): #0,1,2,3,4,5,6,7,8 數(shù)據(jù)切割 mythd= Find(datalist,i*(lines//(N-1)) , (i+1)*(lines//(N-1)),searchstr,savefile) # //表示整除 mythd.start() threadlist.append(mythd) #添加到線程列表 #97 = 97//10*10=90 mylastthd= Find(datalist,lines//(N-1)*(N-1),lines,searchstr,savefile) #最后的線程搜索剩下的尾數(shù) mylastthd.start() threadlist.append(mylastthd) #添加到線程列表 for thd in threadlist: #遍歷線程列表 thd.join() print("finish")
以上這篇Python 多線程搜索txt文件的內(nèi)容,并寫入搜到的內(nèi)容(Lock)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
pytorch 轉(zhuǎn)換矩陣的維數(shù)位置方法
今天小編就為大家分享一篇pytorch 轉(zhuǎn)換矩陣的維數(shù)位置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12基于PyQt5自制簡(jiǎn)單的文件內(nèi)容檢索小工具
這篇文章主要為大家詳細(xì)介紹了如何基于PyQt5自制一個(gè)簡(jiǎn)單的文件內(nèi)容檢索小工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-05-05Python中super函數(shù)用法實(shí)例分析
這篇文章主要介紹了Python中super函數(shù)用法,結(jié)合實(shí)例形式詳細(xì)分析了Python中super函數(shù)的功能、調(diào)用父類相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-03-03利用python+ffmpeg合并B站視頻及格式轉(zhuǎn)換的實(shí)例代碼
這篇文章主要介紹了利用python+ffmpeg合并B站視頻及格式轉(zhuǎn)換的實(shí)例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11使用Python實(shí)現(xiàn)將數(shù)據(jù)寫入Excel工作表
在數(shù)據(jù)處理和報(bào)告生成等工作中,Excel?表格是一種常見且廣泛使用的工具,本文中將介紹如何使用?Python?寫入數(shù)據(jù)到?Excel?表格,并提供更高效和準(zhǔn)確的?Excel?表格數(shù)據(jù)寫入方案,需要的可以參考下2024-01-01詳解Python中映射類型的內(nèi)建函數(shù)和工廠函數(shù)
這篇文章主要介紹了詳解Python中映射類型的內(nèi)建函數(shù)和工廠函數(shù),目前Python的內(nèi)建映射類型只有字典一種,需要的朋友可以參考下2015-08-08