这里参考了这篇文章 https://gist.github.com/friskfly/4412375 ,然后加上自己的理解和应用, 整理如下:
# -*- coding: utf-8 -*-
import os,time
import threading
import ConfigParser
rlock = threading.RLock()
curPosition = 0 #初始化位置为文件其实位置
class Reader(threading.Thread):
def __init__(self, res):
self.res = res
super(Reader, self).__init__() #调用子类构造函数获得文件大小
def run(self): #线程函数
global curPosition
fstream = open(self.res.fileName, 'r') #打开文件
while True:
rlock.acquire()
startPosition = curPosition #每次更新起始位置
if(startPosition + self.res.fileSize/threadNum) < self.res.fileSize: # 这里,例如开了10个线程,就将文件分为10块,每个线程负责一块
curPosition = endPosition = (startPosition + self.res.fileSize/threadNum)
else:
curPosition = endPosition = self.res.fileS