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写的贪吃蛇游戏例子
Jun 16 Python
Python程序中使用SQLAlchemy时出现乱码的解决方案
Apr 24 Python
Python Matplotlib库入门指南
May 18 Python
python单例模式实例解析
Aug 28 Python
python中pip的使用和修改下载源的方法
Jul 08 Python
python获取Pandas列名的几种方法
Aug 07 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
Aug 12 Python
Python selenium文件上传下载功能代码实例
Apr 13 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
python 实现 hive中类似 lateral view explode的功能示例
May 18 Python
Python ellipsis 的用法详解
Nov 20 Python
python 制作网站小说下载器
Feb 20 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
yii中widget的用法
2014/12/03 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
srcElement表格样式
2006/09/03 Javascript
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
javascript 验证日期的函数
2010/03/18 Javascript
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
Javascript es7中比较实用的两个方法示例
2017/07/21 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
python通过ffmgep从视频中抽帧的方法
2018/12/05 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
10款最好的Python开发编辑器
2019/07/03 Python
Python Web程序搭建简单的Web服务器
2019/07/31 Python
Python正则表达式如何匹配中文
2020/05/27 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
珍珠奶茶店创业计划书
2014/01/11 职场文书
教师政风行风评议心得体会
2014/10/21 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL