Python实现模拟分割大文件及多线程处理的方法
发布时间:2020-12-17 08:01:39 所属栏目:Python 来源:网络整理
导读:本篇章节讲解Python实现模拟分割大文件及多线程处理的方法。供大家参考研究具体如下: #!/usr/bin/env python#--*-- coding:utf-8 --*--from random import randintfrom time import ctimefrom time import sleepimport queueimport threadingclas
本篇章节讲解Python实现模拟分割大文件及多线程处理的方法。分享给大家供大家参考,具体如下: #!/usr/bin/env python #--*-- coding:utf-8 --*-- from random import randint from time import ctime from time import sleep import queue import threading class 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: break def 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进程与线程操作技巧总结》、《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》 希望本文所述对大家Python程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |