python3多线程处理文件

news2024/10/6 18:34:18

问题

现在需要对某个文本中的每一条进行处理,例如:对每一行进行同样的操作,现在采用多线程进行,而不是一条一条读取、执行
在这里插入图片描述

解决

#! /usr/bin/env python
# encoding:utf-8
# Software:PyCharm
# Time:2023/10/07 14:30
# Author:sec0nd

import threading
import time
import queue

def readFile():
    file_object = open('1.txt')
    global queue
    for line in file_object:
        queue.put(line)
        
class Consumer(threading.Thread):
    def run(self):
        global queue
        while queue.qsize() > 0:
            msg = self.name + '消费了 ' + queue.get()
            print(msg)
            time.sleep(0.01)

queue = queue.Queue()
def main():
    readFile()
    for i in range(5):
        c = Consumer()
        c.start()

if __name__ == '__main__':
    main()

open(‘1.txt’) 这里是要执行操作的文本文件

for i in range(5) 这里的5是指5个线程

run()里面是要执行的操作,这里以输出为例

执行结果:
在这里插入图片描述

代码解释:

首先,我们导入了Python标准库中的threading、time和queue模块。threading模块提供了与线程相关的类和函数,time模块用于处理时间,queue模块用于创建和管理队列。

接下来,我们定义了一个名为readFile的函数,该函数用于读取文件中的数据并将其放入一个名为queue的队列中。在readFile函数中,我们使用了一个全局变量queue来管理队列。

接着,我们定义了一个名为Consumer的类,该类继承自threading.Thread类。Consumer类用于消费queue中的数据。run方法用于消费queue中的元素,并在每次消费时打印一条消息,并暂停0.01秒。

最后,我们定义了一个名为main的方法,该方法首先调用readFile函数将文件数据放入queue中,然后使用for循环创建了5个Consumer线程来消费queue中的元素。每个Consumer线程都会执行run方法,并在每次消费时打印一条消息。

当所有线程都完成后,程序结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s 集群安装(vagrant + virtualbox + CentOS8)

主机环境:windows 11 k8s版本:v1.25 dashboard版本:v2.7.0 calico版本: v3.26.1 CentOS8版本:4.18.0-348.7.1.el8_5.x86_64 用到的脚本: https://gitcode.net/sundongsdu/k8s_cluster 1. Vagrant创建…

乌班图22.04 kubeadm简单搭建k8s集群

1. 我遇到的问题 任何部署类问题实际上对于萌新来说都不算简单,因为没有经验,这里我简单将部署的步骤和想法给大家讲述一下 2. 简单安装步骤 准备 3台标准安装的乌班图server22.04(采用vm虚拟机安装,ip为192.168.50.3&#xff0…

DP1363F与CLRC663的兼容性对比区别

DP1363F收发器DP1363F支持下列操作模式 • 替代兼容CLRC663/RC663 • 读写模式支持 ISO/IEC 14443A/MIFARE • 读写模式支持 SO/IEC 14443IB • JIS X 6319-4 读写模式支持(等效于FeliCa1方案) • 相应于 ISO/IEC 18092 的被动发起方模式 • 读写模式支持…

告别繁琐,轻松管理SQLite数据库!极简SQLite数据库管理器上线了

如果你是一名Mac用户,并且经常处理SQLite数据库,那么你一定会遇到繁琐的数据库操作,比如安装各种复杂的软件、编写复杂的SQL语句等等。这些操作不仅费时费力,而且还容易出错。那么是否有一种轻松快捷的方法可以管理SQLite数据库呢…

Springboot 音乐网站管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 音乐网站管理系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统 具有完整的源代码和数据库&…

口袋参谋:如何提升宝贝流量?这三种方法超实用!

​你的店铺能不能出爆款?提升单品流量是关键。 对于新手卖家来说,是缺乏运营技巧和运营经验的,运营技巧主要体现在标题写作、各种图片和视频制作等。 由于新手买家没有经验,习惯于直接使用数据包上传,导致宝贝没有展…

使用scipy库将离散点连续化

离散点连续化用于求满足所有离散点的对应法则F(x)且非离散集合中的值。 如有x[0,1,2,3], y[1,3,2,1],求当x1.5时对应的y是多少? 拟合 可以直接求出对应的函数式,但要求知晓经验函数 from numpy import * from scipy.signal import *# 如线性拟合经验函…

【Linux】 rm命令使用

作为一个程序员 我们经常用到rm -rf * 或者rm -rf XXX 。但是rm -rf 是什么意思不是很清楚,咱们一起来学习一下吧。 rm(英文全拼:remove)命令用于删除一个文件或者目录。 rm 命令 -Linux手册页 著者 由保罗鲁宾、大卫麦肯齐、理…

jira+confluence安装

准备如下所有包: atlassian-agent.jar jdk-8u241-linux-x64.tar.gz atlassian-confluence-8.0.0-x64.bin atlassian-jira-software-9.4.0-x64.bin mysql-8.0.31-1.el8.x86_64.rpm-bundle.tar mysql-connector-java-8.0.28.jar confluence-8.2.1破解 1.安装j…

对于java线程池ThreadPoolExecutor监控以及参数动态调整的思考

https://mp.weixin.qq.com/s/baYuX8aCwQ9PP6k7TDl2Ww Java线程池实现原理及其在美团业务中的实践 - 美团技术团队 上面两个链接都是一篇文章发布在不同地方,看其中一篇即可。 看到了美团技术团队的这篇文章以及加上自己对线程池的了解和看过的源码,有如…

app对接广告变现平台:影响app广告单价的4大因素

在移动应用开发者和媒体公司竞相寻求提高广告变现效率的今天,理解影响APP广告单价的关键因素至关重要。广告单价是广告收入的核心组成部分,它受多种因素的影响,直接关系到媒体的盈利能力。主要因素大概有以下几点:#APP广告变现# …

vue3+vite+uniapp 封装一个省市区组件

一、预览图 二、使用前的一些注意事项 只支持在 uniapp vue3 项目中使用支持微信小程序和h5 (app端没有测试过)ui库用的 uview-plus省市区数据用的是 vant-ui 提供的一个赖库 vant/area-data 三、组件代码 <template><u-popup :show"show" type"botto…

深圳市重点实验室如何办理-华夏泰科

深圳市重点实验室是为了提升科技创新的能力和水平&#xff0c;推动科技成果的转化和应用而设立的一项重要机构。同时深圳市重点实验室是开展高水平基础研究和应用基础研究、聚焦和培养优秀科技人才、开展学术交流的重要基地。认定该资质对于提升品牌影响力和科技创新能力有着重…

Elasticsearch实战(十八)--ES搜索Doc Values/Fielddata 正排索引 深入解析

1.正排索引与倒排索引 先说结论&#xff0c;再讲原理 !!!尽量不要再生产环境使用fielddatatrue&#xff0c;即使要用也要控制好占用内存比例的大小&#xff0c;否则容易出现OOM !!!尽量不要再生产环境使用fielddatatrue&#xff0c;即使要用也要控制好占用内存比例的大小&#…

剑指offer——JZ32 从上往下打印二叉树 解题思路与具体代码【C++】

一、题目描述与要求 从上往下打印二叉树_牛客题霸_牛客网 (nowcoder.com) 题目描述 不分行从上往下打印出二叉树的每个节点&#xff0c;同层节点从左至右打印。例如输入{8,6,10,#,#,2,1}&#xff0c;如以下图中的示例二叉树&#xff0c;则依次打印8,6,10,2,1(空节点不打印&a…

docker运维之自定义网络配置

自定义网络配置讲解与实操 docker中的容器有独立的隔离空间&#xff0c;那么&#xff0c;它们能不能通过网络相互访问呢&#xff1f; 答案是可以的&#xff01;作者在之前Redis篇中使用docker配置了主从、cluster集群&#xff0c;当时的做法是利用每个容器的ip地址和端口创建相…

一对一直播实时美颜SDK算法背后的技术原理与实现

美颜技术已经成为了现代社交媒体和视频通信的不可或缺的一部分。用户希望看起来最好&#xff0c;而实时美颜技术通过在实时视频中平滑皮肤、修复瑕疵以及增强特征来满足这一需求。这种技术的核心是实时美颜SDK&#xff0c;它蕴含着精密的算法和工程实现&#xff0c;本文将深入探…

成功解决@Async注解不生效的问题,异步任务处理问题

首先&#xff0c;有这样一个异步监听方法 然后配置好了异步线程池 package com.fdw.study.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Conf…

维修派单系统好用吗?如何实现数字化后勤管理?

在当今社会&#xff0c;各种设备和设施的正常运转对于单位和组织来说至关重要。然而&#xff0c;由于各种因素的影响&#xff0c;设备和设施在日常运行过程中难免会出现故障。这时&#xff0c;高效的维修服务就显得尤为重要。而“的修”维修派单系统&#xff0c;就是一种专为维…

Java卷上天,可以转行干什么?

小刚是某名企里的一位有5年经验的高级Java开发工程师&#xff0c;每天沉重的的工作让他疲惫不堪&#xff0c;让他萌生出想换工作的心理&#xff0c;但是转行其他工作他又不清楚该找什么样的工作 因为JAVA 这几年的更新实在是太太太……快了&#xff0c;JAVA 8 都还没用多久&am…