您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2024/7/9 5:20:32发布21次查看
这篇文章主要介绍了python实现模拟分割大文件及多线程处理的方法,涉及python文件读取、分割及多线程相关操作技巧,需要的朋友可以参考下
本文实例讲述了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模拟分割大文件以及多线程处理的实现方法的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product