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 相关文章推荐
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
Python如何发布程序的详细教程
Oct 09 Python
小白入门篇使用Python搭建点击率预估模型
Oct 12 Python
Python函数定义及传参方式详解(4种)
Mar 18 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
Jul 04 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
Sep 25 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
Django查询优化及ajax编码格式原理解析
Mar 25 Python
在Django中自定义filter并在template中的使用详解
May 19 Python
如何理解Python中包的引入
May 29 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
Mar 03 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
如何冲泡挂耳包咖啡?技巧是什么
2021/03/04 冲泡冲煮
discuz安全提问算法
2007/06/06 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
jquery CSS选择器笔记
2010/03/29 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
2013/12/12 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
Vue3为什么这么快
2020/09/23 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
最大K个数问题的Python版解法总结
2016/06/16 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
Python应用库大全总结
2018/05/30 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
python3处理word文档实例分析
2020/12/01 Python
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
抽象类和接口的区别
2012/09/19 面试题
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
酒店管理专业毕业生推荐信
2013/11/10 职场文书
个人应聘自我评价分享
2013/11/18 职场文书
公立医院改革实施方案
2014/03/14 职场文书
质量负责人任命书
2014/06/06 职场文书
起诉书格式范文
2015/05/20 职场文书
回门宴新娘答谢词
2015/09/29 职场文书
小学英语教学反思范文
2016/02/15 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL