python多线程处理文件_python多线程分块读取文件
# _*_coding:utf-8_*_
import time, threading, ConfigParser
'''
Reader类,继承threading.Thread
@__init__方法初始化
@run方法实现了读文件的操作
'''
class Reader(threading.Thread):
def __init__(self, file_name, start_pos, end_pos):
super(Reader, self).__init__()
self.file_name = file_name
self.start_pos = start_pos
self.end_pos = end_pos
def run(self):
fd = open(self.file_name, 'r')
'''
该if块主要判断分块后的文件块的首位置是不是行首,
是行首的话,不做处理
否则,将文件块的首位置定位到下一行的行首
'''
if self.start_pos != 0:
fd.seek(self.start_pos-1)
if fd.read(1) != '\n':
line = fd.readline()
self.start_pos = fd.tell()
fd.seek(self.start_pos)
'''
对该文件块进行处理
'''
while (self.start_pos <= self.end_pos):
line = fd.readline()
'''
do somthing
'''
self.start_pos = fd.tell()
'''
对文件进行分块,文件块的数量和线程数量一致
'''
class Partition(object):
def __init__(self, file_name, thread_num):
self.file_name = file_name
self.block_num = thread_num
def part(self):
fd = open(self.file_name, 'r')
fd.seek(0, 2)
pos_list = []
file_size = fd.tell()
block_size = file_size/self.block_num
start_pos = 0
for i in range(self.block_num):
if i == self.block_num-1:
end_pos = file_size-1
pos_list.append((start_pos, end_pos))
break
end_pos = start_pos+block_size-1
if end_pos >= file_size:
end_pos = file_size-1
if start_pos >= file_size:
break
pos_list.append((start_pos, end_pos))
start_pos = end_pos+1
fd.close()
return pos_list
if __name__ == '__main__':
'''
读取配置文件
'''
config = ConfigParser.ConfigParser()
config.readfp(open('conf.ini'))
#文件名
file_name = config.get('info', 'fileName')
#线程数量
thread_num = int(config.get('info', 'threadNum'))
#起始时间
start_time = time.clock()
p = Partition(file_name, thread_num)
t = []
pos = p.part()
#生成线程
for i in range(thread_num):
t.append(Reader(file_name, *pos[i]))
#开启线程
for i in range(thread_num):
t[i].start()
for i in range(thread_num):
t[i].join()
#结束时间
end_time = time.clock()
print "Cost time is %f" % (end_time - start_time)
python多线程处理文件_python多线程分块读取文件相关推荐
- python扫描目录下文件_Python扫描目录读取文件,不考虑子目录
这篇文章主要为大家详细介绍了Python扫描目录读取文件,不考虑子目录,具有一定的参考价值,可以用来参考一下. 感兴趣Python扫描目录读取文件,不考虑子目录的小伙伴,下面一起跟随512笔记的小编罗 ...
- python多线程写同一个文件_Python多线程快速写入文件,python,飞速
Python多线程快速写入文件,python,飞速 发表时间:2020-07-10 乱序多线程写入 举个最简单的例子,只要求快速写入即可,对顺序无要求时: import threading def w ...
- python 多线程读写文件_python多线程同步之文件读写控制
本文实例为大家分享了python多线程同步之文件读写控制的具体代码,供大家参考,具体内容如下 1.实现文件读写的文件ltz_schedule_times.py #! /usr/bin/env pyth ...
- python文件分块读取_Python多进程分块读取超大文件的方法
本文实例讲述了Python多进程分块读取超大文件的方法.分享给大家供大家参考,具体如下: 读取超大的文本文件,使用多进程分块读取,将每一块单独输出成文件 # -*- coding: GBK -*- i ...
- python 代码分块_[代码全屏查看]-python多进程分块读取文件
[1].[代码] [Python]代码 # -*- coding: GBK -*- import urlparse import datetime import os from multiproces ...
- python读取所有txt文件_python如何批量读取txt文件
python批量读取txt文件的方法:首先导入系统模块:然后将文件夹路径更改为需要批量读取的txt文件存放的路径:再调用系统模块得到该文件夹下的所有文件名称:最后遍历文件夹,读取txt文件. 如果文件 ...
- python open读取_python,一读取文件open()
在实际操作中,我们经常会读取文件,这个时候python为我们提供了一个open()的方法,供我们读取文件,通过help(open),我们可以获取open的方法 f.close()关闭读取 f.read ...
- python怎么批量读取文件_python如何批量读取txt文件
原标题:python如何批量读取txt文件 python批量读取txt文件的方法:首先导入系统模块:然后将文件夹路径更改为需要批量读取的txt文件存放的路径:再调用系统模块得到该文件夹下的所有文件名称 ...
- python3 读取.plist文件_Python学习笔记 -5 - 文件操作
Python文件操作 读写文件是最常见的IO操作,在磁盘上读写文件的功能都是由操作系统提供的,操作系统不允许普通的程序直接操作磁盘(大部分程序都需要间接的通过操作系统来完成对硬件的操作),所以,读写文 ...
最新文章
- python迭代列表_Python迭代列表中列的元素
- 调用支付宝接口android最新,Android 外接sdk之支付宝
- 商汤组了「最强大脑」局,正儿八经解释为啥搞起电竞AI
- php curl ob start,curl - php中开启缓冲压缩 ob_start('ob_gzhandler') 之后是在什么时候开始的压缩?...
- dom4j-cookbook
- “哪里有人喜欢孤独,不过是害怕失望罢了”———村上春树《东尼泷谷》观后感...
- PostgreSQL的clog—从事务回滚速度谈起
- Jsp 页面添加动态水印
- 高清壁纸|是时候换换心情了
- 基于SGIP协议编写短信网关接口
- PhoneGap在Microsoft Visual Studio Express For Wi...
- 无线通信算法工程师知识地图
- 性能测试-性能测试结果分析
- 处暑(Limit of Heat )节到了,应了解的生活常识
- html显示ping值,jquery JS实现ping的功能(JS ping url)
- PDF格式转换WPS格式如何实现
- 周星驰搞笑电影中的BT角色大全(100位)
- 【Wifi模块】使用基于CP2102のWifi模块连接阿里云
- 视觉工程师出差过多必会出现的问题
- Error from server: Get “https:IP:10250/*“:dial tcp IP:10250: connect: no route to host
热门文章
- Android中使用GridView实现标签效果源码
- 利用Oracle虚拟私有数据库进行整合
- Kubernetes v1.6开始支持RBAC
- 黑客攻破网站涂鸦特效(强烈建议看看)
- web自动化测试之百度经验-HTTP层面的Web Service自动化测试
- vim中Mapping already in use: LocalLeaderis, mode n错误解决的方法解释
- cocos2d-x plist使用
- 静静守候属于我们的幸福。坚守我们的约定
- 【学习笔记】 Python - Pandas
- 【MM 模块】 Optimized Purchasing 优化采购 3