Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法


Posted in Python onAugust 23, 2019

废话不多说,直接上代码吧!

import threading
import os
 
class Find(threading.Thread): #搜索数据的线程类
 def __init__(self,datalist,startIndex,endIndex,searchstr,savefile): #datalist要搜索的内容列表,startIndex列表搜索范围的开始下标,searchstr要搜索的内容
  threading.Thread.__init__(self)
  self.datalist=datalist #要搜索的数据的内存地址
  self.startIndex=startIndex #开始的索引
  self.endIndex=endIndex #结束的索引
  self.seachstr=searchstr #需要搜索的数据
  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="") #搜索数据
  		self.findlist.append(line)
 	global mutex #多线程共享全局变量(全局锁)
 	with mutex: #获取锁(自动释放锁)
 		for line in self.findlist:
 			self.savefile.write(line.encode("gbk"))
  	
 
mutex=threading.Lock() #创建一个锁
savefile=open("c:\\zhaodao.txt","wb") #搜索到的内容写入该文件
 
path = "C:\\data1.txt" #要搜索的文件
file = open(path, "rb")
datalist = file.readlines() # 全部读入内存
lines=len(datalist) #所有的行数
searchstr=input("输入要查询的数据")
N=10 #开启10个线程
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 数据切割
 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) #最后的线程搜索剩下的尾数
mylastthd.start()
threadlist.append(mylastthd) #添加到线程列表
 
for thd in threadlist: #遍历线程列表
 thd.join()
print("finish")

以上这篇Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 Python
Python实现基于HTTP文件传输实例
Nov 08 Python
python内存管理分析
Apr 08 Python
谈谈Python进行验证码识别的一些想法
Jan 25 Python
对Python w和w+权限的区别详解
Jan 23 Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 Python
python 实现兔子生兔子示例
Nov 21 Python
python实现简单日志记录库glog的使用
Dec 13 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
Apr 22 Python
在keras 中获取张量 tensor 的维度大小实例
Jun 10 Python
python中setuptools的作用是什么
Jun 19 Python
python中Pyqt5使用Qlabel标签播放视频
Apr 22 Python
Python 实用技巧之利用Shell通配符做字符串匹配
Aug 23 #Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 #Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 #Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 #Python
自定义django admin model表单提交的例子
Aug 23 #Python
django admin 自定义替换change页面模板的方法
Aug 23 #Python
解决python多行注释引发缩进错误的问题
Aug 23 #Python
You might like
php导入导出excel实例
2013/10/25 PHP
linux中cd命令使用详解
2015/01/08 PHP
php代码架构的八点注意事项
2016/01/25 PHP
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
jQuery实现预加载图片的方法
2015/03/17 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
python中常用的九种预处理方法分享
2016/09/11 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
Python异常处理操作实例详解
2018/08/28 Python
环境科学毕业生自荐信
2013/11/21 职场文书
高分子材料与工程专业推荐信
2013/12/01 职场文书
小学中秋节活动方案
2014/02/06 职场文书
挂科检讨书范文
2014/02/20 职场文书
安全生产演讲稿
2014/05/09 职场文书
公司离职证明标准格式
2014/11/18 职场文书
2014年班务工作总结
2014/12/02 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
学历证明样本
2015/06/16 职场文书
大学开学典礼新闻稿
2015/07/17 职场文书
护士心得体会范文
2016/01/25 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
React中的Context应用场景分析
2021/06/11 Javascript