python 模拟分割大文件后,多线程处理
2013-06-08 14:44
204 查看
#!/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 读取键盘输入字符,多线程操作,文件操作随机处理 开发范例
- Python3 模拟MapReduce处理分析大数据文件——《Python宝典》
- linux多线程非递归遍历文件夹模拟处理文件
- CSV文件分割与列异常处理的python脚本
- python 多线程处理抓取网页
- Head First Python 第二章 函数模块&第三章 文件与异常&第四章 持久存储&第五章 处理数据
- Python分割文件以及合并文件
- Python threading 多线程控制和处理
- Python开发技术详解-笔记_第07章-文件的处理
- ubuntu下通过python处理word文件中的表格
- python处理文本文件实现生成指定格式文件的方法
- python处理blog文件数据
- python 多线程将大文件分开下载后在合并
- python实现任意位置文件分割
- python复习笔记[8]——I/O及文件处理
- python处理文件和目录
- 【脚本语言系列】关于Python结构化二进制文件处理Microsoft Excel,你需要知道的事
- Python 逐行分割大txt文件