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中条件选择和循环语句使用方法介绍
Mar 13 Python
python通过zlib实现压缩与解压字符串的方法
Nov 19 Python
Django 2.0版本的新特性抢先看!
Jan 05 Python
PyQt5实现拖放功能
Apr 25 Python
python list是否包含另一个list所有元素的实例
May 04 Python
Python网络爬虫之爬取微博热搜
Apr 18 Python
pyqt 实现在Widgets中显示图片和文字的方法
Jun 13 Python
python开启debug模式的方法
Jun 27 Python
python画图常规设置方式
Mar 05 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
Apr 30 Python
python爬虫用mongodb的理由
Jul 28 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 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中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
php自动加载机制的深入分析
2013/06/08 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
2012/09/21 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
2018/05/13 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
一则python3的简单爬虫代码
2014/05/26 Python
Python使用functools实现注解同步方法
2018/02/06 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
python实现PCA降维的示例详解
2020/02/24 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
银行优秀员工事迹
2014/02/06 职场文书
安全教育月活动总结
2014/05/05 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
学校周年庆活动方案
2014/08/22 职场文书
银行贷款委托书范本
2014/10/11 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
MongoDB 常用的crud操作语句
2021/06/20 MongoDB
pt-archiver 主键自增
2022/04/26 MySQL