Python 多线程不加锁分块读取文件的方法


Posted in Python onDecember 11, 2018

多线程读取或写入,一般会涉及到同步的问题,否则产生的结果是无法预期的。那么在读取一个文件的时候,我们可以通过加锁,但读不像写操作,会导致文件错误,另外锁操作是有一定的耗时。因此通过文件分块,可以比较有效的解决多线程读问题,之前看到有人写的分块操作,比较复杂,需要实现建立好线程以及所读取块信息,在这里,我提供了一种比较简便的方法,以供参考。

#!/user/bin/env python
#_*_coding:utf-8_*_
from threading import Thread
import time
from processing import Process, Queue

from multiprocessing import Process

file_path = 't'
fd = open(file_path, 'r')


def deal(thread_num):

 i = 1
 line_list = []

 #20是我的文件行数,正式情况下可以通过wc -l t获取
 while i <= 20/thread_num:
 line_list.append(fd.readline())
 i += 1
 return line_list


def todo(thread_name, line_list):
 # print 'thread_name:',thread_name,'start'
 for line in line_list:
 print str(thread_name) + ' counsume:' + line
 # print 'thread_name:', thread_name, 'end'


if __name__ == '__main__':
 thread_num = 10
 thread_list = []
 for i in range(thread_num):
 line_list = deal(thread_num)
 t = Thread(target=todo, args=[i, line_list])
 t.start()
 thread_list.append(t)

 for t in thread_list:
 t.join()

下面是文件格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

运行的结果如下:

Python 多线程不加锁分块读取文件的方法

以上这篇Python 多线程不加锁分块读取文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中正则的使用指南
Dec 04 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
python3 遍历删除特定后缀名文件的方法
Apr 23 Python
python3 requests中使用ip代理池随机生成ip的实例
May 07 Python
用python3教你任意Html主内容提取功能
Nov 05 Python
Python判断是否json是否包含一个key的方法
Dec 31 Python
Django之模板层的实现代码
Sep 09 Python
python 上下文管理器及自定义原理解析
Nov 19 Python
解决Pytorch 加载训练好的模型 遇到的error问题
Jan 10 Python
Python下利用BeautifulSoup解析HTML的实现
Jan 17 Python
解决python DataFrame 打印结果不换行问题
Apr 09 Python
如何用python免费看美剧
Aug 11 Python
对python读写文件去重、RE、set的使用详解
Dec 11 #Python
python版本五子棋的实现代码
Dec 11 #Python
python提取具有某种特定字符串的行数据方法
Dec 11 #Python
Python面向对象基础入门之编码细节与注意事项
Dec 11 #Python
Python面向对象基础入门之设置对象属性
Dec 11 #Python
python提取包含关键字的整行数据方法
Dec 11 #Python
django开发post接口简单案例,获取参数值的方法
Dec 11 #Python
You might like
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
详解vue 组件注册
2020/11/20 Vue.js
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
Python开发的HTTP库requests详解
2017/08/29 Python
运动检测ViBe算法python实现代码
2018/01/09 Python
Python的CGIHTTPServer交互实现详解
2018/02/08 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
python sqlite的Row对象操作示例
2019/09/11 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
餐厅销售主管职责范本
2014/02/19 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
求职信名称怎么写
2014/05/26 职场文书
霸气队列口号
2014/06/18 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
党支部承诺书
2015/01/20 职场文书
物业保洁员管理制度
2015/08/05 职场文书
运动会广播稿100字
2015/08/19 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis
Go语言设计模式之结构型模式
2021/06/22 Golang