欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python多線程分塊讀取文件

系統 1632 0

本文實例為大家分享了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)
          

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本一区二区三区中文字幕 | 亚洲精品成人av久久 | 久久精品一本到99热免费 | 日韩免费毛片 | 日日摸夜夜添夜夜添亚洲女人 | 99久久免费观看 | 看片在线观看 | 免费视频不卡一区二区三区 | 亚洲精品高清视频 | 免费香蕉视频 | 久久精品国产免费中文 | 久久国产精品99久久久久久牛牛 | 欧美午夜一艳片欧美精品 | 色综合激情 | 老头巨大校花体内驰骋小说文 | 精品视频一区二区三区在线观看 | 超碰一区二区三区 | 五月婷婷综合激情网 | 婷婷丁香社区 | 久久成人精品视频 | 九九九九九九精品任你躁 | 欧美日韩在线观看精品 | 久久久久久久久淑女av国产精品 | www九色| 一区二区三区日韩视频在线观看 | 欧美日韩专区国产精品 | 日韩精品在线一区 | 99pao成人国产永久免费视频 | 日韩精品一| 欧美高清网站 | 成人 精品 | 天天操天天拍 | 欧美精品久久久久久久久老牛影院 | 一级毛片免费播放 | 日本黄a三级三级三级 | 亚洲人与牲动交xxxxbbbb | 日韩精品一二三区 | 亚洲国产成人在线 | 男女在线观看啪网站 | 国产一级精品高清一级毛片 | 黑人精品欧美一区二区蜜桃 |