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实现文件复制删除
Apr 19 Python
详解Django的model查询操作与查询性能优化
Oct 16 Python
Python lxml解析HTML并用xpath获取元素的方法
Jan 02 Python
基于python if 判断选择结构的实例详解
May 06 Python
python整合ffmpeg实现视频文件的批量转换
May 31 Python
python批量修改ssh密码的实现
Aug 08 Python
python使用pip安装SciPy、SymPy、matplotlib教程
Nov 20 Python
python主线程与子线程的结束顺序实例解析
Dec 17 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
Jan 05 Python
Python中json.dumps()函数的使用解析
May 17 Python
python树莓派通过队列实现进程交互的程序分析
Jul 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
无需数据库在线投票调查php代码
2016/07/20 PHP
PHP类型约束用法示例
2016/09/28 PHP
js 调整select 位置的函数
2008/02/21 Javascript
javascript jQuery插件练习
2008/12/24 Javascript
[推荐]javascript 面向对象技术基础教程
2009/03/03 Javascript
javascript 清除输入框中的数据
2009/04/13 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
python使用RNN实现文本分类
2018/05/24 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
Python3中列表list合并的四种方法
2019/04/19 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
面料业务员岗位职责
2013/12/26 职场文书
客服服务心得体会
2013/12/30 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
安全生产宣传标语
2014/06/06 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书