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面向对象编程中关于类和方法的学习笔记
Jun 30 Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 Python
Python 模拟登陆的两种实现方法
Aug 10 Python
python3使用scrapy生成csv文件代码示例
Dec 28 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
May 24 Python
Python设计模式之状态模式原理与用法详解
Jan 15 Python
学生信息管理系统Python面向对象版
Jan 30 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
解决python中使用PYQT时中文乱码问题
Jun 17 Python
简单了解python中对象的取反运算符
Jul 01 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
python tqdm用法及实例详解
Jun 16 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 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
python字典的常用操作方法小结
2016/05/16 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
Python列表切片操作实例总结
2019/02/19 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
python生成器推导式用法简单示例
2019/10/08 Python
Python 输出详细的异常信息(traceback)方式
2020/04/08 Python
Styleonme中文网:韩国高档人气品牌
2017/06/21 全球购物
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
写好求职信第一句话的技巧
2013/10/26 职场文书
贷款担保书范文
2014/05/13 职场文书
党员领导干部承诺书
2014/05/28 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
python使用glob检索文件的操作
2021/05/20 Python
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby