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


Posted in Python onOctober 10, 2017

本文实例讲述了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入门篇之函数
Oct 20 Python
Python实现比较两个文件夹中代码变化的方法
Jul 10 Python
python中的错误处理
Apr 10 Python
python+django快速实现文件上传
Oct 24 Python
Python+request+unittest实现接口测试框架集成实例
Mar 16 Python
Python rstrip()方法实例详解
Nov 11 Python
python读写csv文件实例代码
Jul 05 Python
深入了解Python iter() 方法的用法
Jul 11 Python
python 装饰器功能与用法案例详解
Mar 06 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
Jul 07 Python
Python操作Excel的学习笔记
Feb 18 Python
用Python将库打包发布到pypi
Apr 13 Python
遗传算法之Python实现代码
Oct 10 #Python
Python使用arrow库优雅地处理时间数据详解
Oct 10 #Python
Python使用getpass库读取密码的示例
Oct 10 #Python
Python 逐行分割大txt文件的方法
Oct 10 #Python
Python输出带颜色的字符串实例
Oct 10 #Python
python中使用正则表达式的连接符示例代码
Oct 10 #Python
python利用正则表达式排除集合中字符的功能示例
Oct 10 #Python
You might like
深入解析PHP中逗号与点号的区别
2013/08/05 PHP
php fread读取文件注意事项
2016/09/24 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
php中的依赖注入实例详解
2019/08/14 PHP
js option删除代码集合
2008/11/12 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
2015/11/25 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
python实现FTP服务器服务的方法
2017/04/11 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
浅述python2与python3的简单区别
2018/09/19 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
django settings.py 配置文件及介绍
2019/07/15 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
幼儿园招生广告
2014/03/19 职场文书
暑期教师培训方案
2014/06/07 职场文书
小学见习报告
2015/06/23 职场文书
三八妇女节致辞
2015/07/31 职场文书
升职自荐书
2019/05/09 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL