首页 > 编程 > Python > 正文

Python实现模拟分割大文件及多线程处理的方法

2020-01-04 16:34:42
字体:
来源:转载
供稿:网友

本文实例讲述了Python实现模拟分割大文件及多线程处理的方法。分享给大家供大家参考,具体如下:

#!/usr/bin/env python#--*-- coding:utf-8 --*--from random import randintfrom time import ctimefrom time import sleepimport queueimport threadingclass MyTask(object):  """具体的任务类"""  def __init__(self, name):    self.name = name    self._work_time = randint(1, 5)  def work(self):    print("Task %s is start : %s, sleep time= %d" % (self.name, ctime(), self._work_time))    sleep(self._work_time)    print("Task %s is end : %s" % (self.name, ctime()))class MyThread(threading.Thread):  """多线程的类"""  def __init__(self, my_queue):    self.my_queue = my_queue    super(MyThread, self).__init__()  def run(self):    while True:      if self.my_queue.qsize() > 0:        self.my_queue.get().work()      else:        breakdef print_split_line(num=30):  print("*" * num)if __name__ == "__main__":  print_split_line()  import my_read_file  # 分割文件  sf = my_read_file.SplitFiles(r"F:/multiple_thread_read_file.txt", line_count=300)  file_num = sf.split_file()  queue_length = file_num  my_queue = queue.LifoQueue(queue_length)  threads = []  for i in range(queue_length):    file_name = sf.get_part_file_name(i)    mt = MyTask(file_name)    my_queue.put_nowait(mt)  for i in range(queue_length):    mtd = MyThread(my_queue)    threads.append(mtd)  for i in range(queue_length):    threads[i].start()  for i in range(queue_length):    threads[i].join()  print_split_line()

 

希望本文所述对大家Python程序设计有所帮助。


注:相关教程知识阅读请移步到python教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表