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中常见的数据类型小结
Aug 29 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
python实现数据图表
Jul 29 Python
在Python 中实现图片加框和加字的方法
Jan 26 Python
Django 日志配置按日期滚动的方法
Jan 31 Python
python定时按日期备份MySQL数据并压缩
Apr 19 Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
详解Python流程控制语句
Oct 28 Python
Django配置跨域并开发测试接口
Nov 04 Python
python中把元组转换为namedtuple方法
Dec 09 Python
Python基于百度API识别并提取图片中文字
Jun 27 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初学者头疼问题总结
2006/10/09 PHP
php 之 没有mysql支持时的替代方案
2006/10/09 PHP
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
用PHP将数据导入到Foxmail的实现代码
2010/09/05 PHP
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
shiro授权的实现原理
2017/09/21 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
JavaScript图像放大镜效果实现方法详解
2020/06/28 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
详解Python爬虫的基本写法
2016/01/08 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
python3 xpath和requests应用详解
2020/03/06 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
python Zmail模块简介与使用示例
2020/12/19 Python
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
班长岗位职责
2013/11/10 职场文书
幼儿园家长会邀请函
2014/01/15 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
督导岗位职责
2015/02/04 职场文书
Nginx配置https的实现
2021/11/27 Servers