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 相关文章推荐
分享15个最受欢迎的Python开源框架
Jul 13 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 Python
Python标准库inspect的具体使用方法
Dec 06 Python
使用python存储网页上的图片实例
May 22 Python
django用户登录和注销的实现方法
Jul 16 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
Jul 02 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
Python 实现数组相减示例
Dec 27 Python
python保留小数位的三种实现方法
Jan 07 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
Dec 10 Python
python如何发送带有附件、正文为HTML的邮件
Feb 27 Python
django使用多个数据库的方法实例
Mar 04 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
php之curl设置超时实例
2014/11/03 PHP
php浏览历史记录的方法
2015/03/10 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
AngularJS实现单一页面内设置跳转路由的方法
2017/06/28 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
详解javascript对数组和json数组的操作
2019/04/15 Javascript
了解JavaScript中的选择器
2019/05/24 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
对Python3之进程池与回调函数的实例详解
2019/01/22 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
美国在线艺术商店:HandmadePiece
2020/11/06 全球购物
大学生毕业求职简历的自我评价
2013/10/24 职场文书
特教教师先进事迹
2014/05/21 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
Nginx四层负载均衡的配置指南
2021/06/11 Servers
一文搞懂php的垃圾回收机制
2021/06/18 PHP
MySQL的全局锁和表级锁的具体使用
2021/08/23 MySQL