Python实现模拟分割大文件及多线程处理的方法
作者:Jredreamer 发布时间:2021-08-26 10:55:12
标签:Python,文件,多线程
本文实例讲述了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程序设计有所帮助。
来源:http://blog.csdn.net/zhang_red/article/details/9056139


猜你喜欢
- 前言随着Python 3.8的发布,赋值表达式运算符(也称为海象运算符)也发布了。运算符使值的赋值可以传递到表达式中。这通常会使语句数减少一
- 使用rpm安装方式安装完MySQL数据库后,数据文件的默认路径为/var/lib/mysql,然而根目录并不适合用于存储数据文件。原路径:/
- 本文实例讲述了Python机器学习之scikit-learn库中KNN算法的封装与使用方法。分享给大家供大家参考,具体如下:1、工具准备,p
- 打开终端输入以下命令 --> 回车 -->输入密码 -->回车 -->结束:sudo rm -rf /usr/loc
- 本文实例讲述了JavaScript日期工具类DateUtils定义与用法。分享给大家供大家参考,具体如下:DateUtils = { &nb
- 本文是对《Python Qt GUI快速编程》的第9章的扩展对话框例子Find and replace用Python3+PyQt5+Qt D
- pandas 将字符串映射为数字在有些数据集中,有些数据变量用字符串表示,但为了方便处理,往往想转换为好处理的格式,这时候不一定要用one
- 大家好,欢迎大家来到算法数据结构专题,今天我们和大家聊一个非常常用的算法,叫做LRU。LRU的英文全称是Least Recently Use
- 为了方便例子讲解,现有数组和json对象如下var demoArr = ['Javascript', 'Gulp
- 在vue-router控制前端权限是常见需求:有一种做法是直接在后端完成判断,提供页面列表和操作列表,在前端进行渲染,但这个方案并不优雅,前
- 前言之前学习过binarytree第三方库,了解了它定义的各种基本用法。昨天在问答频道中做题时碰到一个关于二叉树的算法填空题,感觉代码不错非
- 在进行接口自动化测试时,有好多接口都基于登陆接口的响应值来关联进行操作的,在次之前试了很多方法,都没有成功,其实很简单用session来做。
- 本文实例为大家分享了python自动发送报警监控邮件 的具体代码,供大家参考,具体内容如下因为有一些日常任务需要每日检查日否执行正确,所以需
- 本文实例讲述了python写xml文件的操作的方法,分享给大家供大家参考。具体方法如下:要生成的xml文件格式如下:<?xml ver
- rpclib 是一个非常好用的 python webservice 库,可以动态的生成 wsdl, 不过这个项目已经基本停止,并被一个新的项
- 问题tensor详细数值 不能直接print打印:import tensorflow as tfx = tf.constant(1)prin
- 环境:MacOS_Cetalina_10.15.1、Mysql8.0.18、Docker_2.0.0.31、docker仓库搜索mysqld
- 但GAE、Django并没有直接将pyExcelerator导出为Excel的方法。我的思路是先用把数据导入到Workbook和Worksh
- 目录实例演示1. axios上传普通文件:2. 大文件导入:结语这次我要讲述的是在React-Flask框架上开发上传组件的技巧。我目前主要
- 在做js测试的时候用到了startsWith函数,但是他并不是每个浏览器都有的,所以我们一般要重写一下这个函数,具体的用法可以稍微总结一下在