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二叉树定义与遍历方法实例分析
May 25 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
Nov 07 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 Python
python yield关键词案例测试
Oct 15 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 Python
pandas之分组groupby()的使用整理与总结
Jun 18 Python
python--shutil移动文件到另一个路径的操作
Jul 13 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
pycharm-professional-2020.1下载与激活的教程
Sep 21 Python
python pyg2plot的原理知识点总结
Feb 28 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
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
List the Codec Files on a Computer
2007/06/18 Javascript
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
js判断变量是否空值的代码
2008/10/26 Javascript
JSON 入门指南 想了解json的朋友可以看下
2009/08/26 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
web打印小结
2017/01/11 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
vue-lazyload使用总结(推荐)
2018/11/01 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
Python中DJANGO简单测试实例
2015/05/11 Python
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
市场营销专业自荐书
2014/06/10 职场文书
2014年护理部工作总结
2014/11/14 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android