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 21 Python
python中管道用法入门实例
Jun 04 Python
python3中zip()函数使用详解
Jun 29 Python
Django安装配置mysql的方法步骤
Oct 15 Python
python利用pandas将excel文件转换为txt文件的方法
Oct 23 Python
django框架模板中定义变量(set variable in django template)的方法分析
Jun 24 Python
Django基础知识 web框架的本质详解
Jul 18 Python
python 如何将数据写入本地txt文本文件的实现方法
Sep 11 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
Python类如何定义私有变量
Feb 03 Python
python字符串下标与切片及使用方法
Feb 13 Python
Python实现上下文管理器的方法
Aug 07 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翻页类
2009/06/01 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
PHP实现邮件群发的源码
2013/06/18 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
原生js滑动轮播封装
2020/07/31 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
python爬虫之百度API调用方法
2017/06/11 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
Django网络框架之创建虚拟开发环境操作示例
2019/06/06 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
python+tkinter实现学生管理系统
2019/08/20 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
详解前端HTML5几种存储方式的总结
2016/12/27 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
日本订房网站,预订日本星级酒店/温泉旅馆:Relux(支持中文)
2020/01/03 全球购物
《水乡歌》教学反思
2014/04/24 职场文书
如何写股份合作协议书
2014/09/11 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
《月光曲》教学反思
2016/02/16 职场文书