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 相关文章推荐
haskell实现多线程服务器实例代码
Nov 26 Python
python 多线程实现检测服务器在线情况
Nov 25 Python
详解Python map函数及Python map()函数的用法
Nov 16 Python
Python基于sklearn库的分类算法简单应用示例
Jul 09 Python
在cmder下安装ipython以及环境的搭建
Oct 19 Python
python中正则表达式与模式匹配
May 07 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
简单了解Django ORM常用字段类型及参数配置
Jan 07 Python
Python利用Xpath选择器爬取京东网商品信息
Jun 01 Python
pycharm实现print输出保存到txt文件
Jun 01 Python
Django实现内容缓存实例方法
Jun 30 Python
Python局部变量与全局变量区别原理解析
Jul 14 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
.htaccess文件保护实例讲解
2011/02/06 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
js loading加载效果实现代码
2009/11/24 Javascript
js下用gb2312编码解码实现方法
2009/12/31 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
用实例分析Python中method的参数传递过程
2015/04/02 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
python获取一组汉字拼音首字母的方法
2015/07/01 Python
python cx_Oracle模块的安装和使用详细介绍
2017/02/13 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
python进度条显示之tqmd模块
2020/08/22 Python
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
KENZO官网:高田贤三在法国创立的品牌
2019/05/16 全球购物
品质主管岗位职责
2014/03/16 职场文书
公司晚会主持词
2014/03/22 职场文书
初中教师业务学习材料
2014/05/12 职场文书
团队激励口号
2014/06/06 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
青岛海底世界导游词
2015/02/11 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
预备党员转正党小组意见
2015/06/01 职场文书