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检测远程udp端口是否打开的方法
Mar 14 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
Python3.6简单操作Mysql数据库
Sep 12 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 Python
Django中的forms组件实例详解
Nov 08 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
python如何统计代码运行的时长
Jul 24 Python
在Python中字符串、列表、元组、字典之间的相互转换
Nov 15 Python
python模拟点击网页按钮实现方法
Feb 25 Python
Django实现任意文件上传(最简单的方法)
Jun 03 Python
python在CMD界面读取excel所有数据的示例
Sep 28 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
通过html表格发电子邮件
2006/10/09 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
Yii rules常用规则示例
2016/03/15 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
微信小程序之批量上传并压缩图片的实例代码
2018/07/05 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
Python字典操作简明总结
2015/04/13 Python
python中sys.argv参数用法实例分析
2015/05/20 Python
python rsa 加密解密
2017/03/20 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
python实现图片横向和纵向拼接
2020/03/05 Python
PyCharm配置anaconda环境的步骤详解
2020/07/31 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
小学生演讲稿
2014/01/12 职场文书
给儿子的表扬信
2014/01/15 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
python如何查找列表中元素的位置
2022/05/30 Python