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 相关文章推荐
pycharm 使用心得(五)断点调试
Jun 06 Python
Python中有趣在__call__函数
Jun 21 Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 Python
在Python的Flask框架中构建Web表单的教程
Jun 04 Python
Python字符串格式化%s%d%f详解
Feb 02 Python
浅谈python可视化包Bokeh
Feb 07 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
Mar 14 Python
python爬虫的一个常见简单js反爬详解
Jul 09 Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 Python
Python如何实现邮件功能
May 27 Python
基于Python快速处理PDF表格数据
Jun 03 Python
keras 多任务多loss实例
Jun 22 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/12/14 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
简介Django中内置的一些中间件
2015/07/24 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
pycharm安装图文教程
2017/05/02 Python
浅析python协程相关概念
2018/01/20 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
我们是伦敦女孩:WalG
2018/01/08 全球购物
YSL圣罗兰美妆俄罗斯官网:Yves Saint Lauret RU
2020/09/23 全球购物
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
生产车间主管岗位职责
2013/12/28 职场文书
《唯一的听众》教学反思
2014/02/20 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
农村老人去世追悼词
2015/06/23 职场文书
新学期主题班会
2015/08/17 职场文书
PostgreSQL存储过程实用脚本(二):创建函数入门
2021/04/05 PostgreSQL
浅谈vue2的$refs在vue3组合式API中的替代方法
2021/04/18 Vue.js
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android