多线程读取文件
为什么Python多线程反而更慢了?
1.文件分块类
## 定义分块类
class PartitionFile(object):
def __init__(self, fileName, threadNum):
self.fileName = fileName
self.blockNum = threadNum def partion(self):
fd = open(self.fileName, 'r')
fd.seek(0, 2) # 移动文件指针到文件尾,用于获取文件大小
fileSize = fd.tell() # 获取文件字符数
Pos_list = [] # 指针坐标,数组
blockSize = int(fileSize/self.blockNum)
start_Pos = 0 # 文件初始指针
for i in range(self.blockNum):
if i == self.blockNum-1:
end_Pos = fileSize-1 # 最后一个文件区块为文件结尾
Pos_list.append((start_Pos, end_Pos))
break
end_Pos = start_Pos+blockSize-1 # 均匀分配每个区块
# if end_Pos >= fileSize:
# end_Pos=fileSize-1
# if start_Pos >= fileSize:
# break
Pos_list.append((start_Pos, end_Pos))
start_Pos = end_Pos+1 # 下一个区块,开始坐标
fd.close()
return Pos_list2.读取文件线程类
3.获取队列数据线程类
4.函数封装
5.性能测试
6.源代码
7.参考
Last updated