python中Thread实现多线程任务

目录

多线程概括:

使用 Thread 模块创建线程

如果不使用多线程:


多线程概括:

多线程是一种并发执行的编程方式,允许程序同时执行多个独立的线程,每个线程在程序中运行独立的任务。每个线程都是程序的基本执行单元,拥有自己的执行序列、局部变量和执行上下文。

在多线程编程中,多个线程可以同时执行,而不是按照严格的顺序进行。这使得程序能够更有效地利用多核处理器,提高整体性能。多线程通常用于执行并行计算、提高响应性以及处理异步任务。

每个线程在执行时都可以独立执行不同的代码段,但它们共享进程的资源,如内存空间和文件句柄。因此,需要谨慎处理多线程之间的数据共享和同步问题,以避免竞态条件和数据一致性问题。多线程编程可以通过操作系统的线程调度器或编程语言提供的线程库来实现。

使用 Thread 模块创建线程

Python 的 threading 模块提供了创建和管理线程的工具。通过导入 threading 模块,你可以使用 Thread 类创建新线程,例如:

from threading import Thread
from time import sleep, ctimeclass MyClass(object):def func(self,name,sec):print(name,':开始',  '时间:', ctime())sleep(sec)print(name,':结束',  '时间:', ctime())def main():# 创建 Thread 实例t1 = Thread(target=MyClass().func, args=(1, 1))t2 = Thread(target=MyClass().func, args=(2, 2))# 启动线程运行t1.start()t2.start()# 等待所有线程执行完毕t1.join()  # join() 等待线程终止,要不然一直挂起t2.join()if __name__=="__main__":main()

这表明两个线程是同时执行的,线程 1 在休眠 1 秒后结束,线程 2 在休眠 2 秒后结束。多线程的优势在于能够并行执行任务,提高程序的执行效率。在这个例子中,由于 sleep 模拟了耗时的任务,所以两个线程可以在几乎同时开始,但由于休眠不同的时间,它们的结束时间有所不同。 

如果不使用多线程:

from time import sleep, ctimedef func(name,sec):print(name,':开始',  '时间:', ctime())sleep(sec)print(name,':结束',  '时间:', ctime())if __name__=="__main__":func(1,1)func(2,2)

可以看到程序1结束之后才执行程序2的,所有多线程可以并发执行,减少程序所用时间

 

 

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

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

相关文章

万字长文深入理解 cache,写出高性能代码

CACHE的一致性 Cache的一致性有这么几个层面 1. 一个CPU的icache和dcache的同步问题 2. 多个CPU各自的cache同步问题 3. CPU与设备(其实也可能是个异构处理器,不过在Linux运行的CPU眼里,都是设备,都是DMA)的cache同…

用百度AI大模型给头像换风格

心血来潮想尝试尝试AI小应用,给图片加个风格(例如微信头像),于是有了这篇简短的教程 目录 1. 领取免费资源2. 在应用列表创建应用3. 在线API调试4. 效果对比 1. 领取免费资源 网站:百度智能云 百度给提供了很多AIGC的…

OpenCV入门7——OpenCV中的滤波器(包括低通滤波与高通滤波,其中低通滤波用于降噪,而高通滤波用于边缘检测)

文章目录 图像滤波卷积相关概念锚点 实战图像卷积Blur an image with a 2d convolution matrix 方盒滤波与均值滤波高斯滤波中值滤波双边滤波高通滤波—索贝尔算子高通滤波—沙尔算子高通滤波—拉普拉斯算子边缘检测Canny 图像滤波 卷积核滤波器 卷积相关概念 锚点 锚点…

详解硬盘的接口、总线和协议

总线:总线是计算机系统中用于连接各个硬件组件的一种通信方式,它可以实现数据、地址和控制信号的传输。在服务器中,内部总线起着承载数据和控制信号的重要作用。总线在单位时间内能传输数据量称为带宽。分为SATA,SAS,P…

linux 系统调用流程分析

x86 1.系统调用 系统调用是用户空间程序与内核交互的主要机制。系统调用与普通函数调用不同,因为它调用的是内核里的代码。使用系统调用时,需要特殊指令以使处理器权限转换到内核态。另外,被调用的内核代码由系统调用号来标识,而…

上门维修安装派单系统小程序APP开发之会员级别设计深度解析

啄木鸟鲁班大师上门安装维修平台APP开发之VIP会员解析,在APP或者小程序里设置的会员叫VIP级别会员,系统一共分为4种会员,注册会员,正式会员,VIP金卡会员,VIP钻卡会员。注册用户是指注册了平台但是没有消费记…

预计2023年交付35万台,增速超400%!HUD硬核玩家强势崛起

随着HUD市场渗透率加速提升,其高速增长期已经来临。 W-HUD和AR-HUD在中国市场的萌芽导入期是在2020年前后,此前HUD市场不温不火,主要归因于以往W-HUD FOV较小,成像画面有限,显示内容简单且效果粗糙;而AR-H…

Linux下使用宏定义判断系统架构和系统类型

文章目录 查看编译器当前支持的宏定义查找指定的宏不同架构不同系统 附录-编译器内部常用的一些宏定义宏定义实际应用使用宏定义判断系统架构使用宏定义判断系统类型 一般情况下在linux下做C/C方面的开发不需要太关注系统架构,当然如果涉及到不同架构下的适配问题&a…

软考小记-软件工程

模块的控制范围包括模块本身及其所有的从属模块。模块的作用范围是指模块一个判定的作用范围,凡是受这个判定影响的所有模块都属于这个判定的作用范围.,原则上一个模块的作用范围应该在其控制范围之内,若没有,则可以将判定所在模块…

安装向量数据库milvus及其Attu

前置条件安装docker compose 在宿主机上创建文件目录 mkdir -p /home/sunyuhua/milvus/db mkdir -p /home/sunyuhua/milvus/conf mkdir -p /home/sunyuhua/milvus/etcd下载docker-compose.yml wget https://github.com/milvus-io/milvus/releases/download/v2.2.11/milvus-s…

OpenGL_Learn14(光照贴图)

1. 漫反射贴图 在光照场景中,它通常叫做一个漫反射贴图(Diffuse Map)(3D艺术家通常都这么叫它),它是一个表现了物体所有的漫反射颜色的纹理图像。 我们会将纹理储存为Material结构体中的一个sampler2D 。我们将之前定义的vec3漫反…

AI技术实力认证,宏电股份荣获2023年度AI天马“领军企业”

近日,由中国新一代人工智能发展战略研究院指导,深圳市人工智能产业协会主办,广东未来产业研究院承办的2023年度“AI天马”认定最终结果公布,宏电股份荣获AI天马“领军企业”奖项。 宏电股份基于20余年的技术沉淀,在工业…

基于猎食者算法优化概率神经网络PNN的分类预测 - 附代码

基于猎食者算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于猎食者算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于猎食者优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

关于lenra你需要了解的

monorepo:项目代码管理方式,单个仓库中管理多个项目是一种设计思想 lenra:是一种工具,对于使用npm和git管理多软件包代码仓库的工作流程进行优化 使用这些工具的优点: 公共依赖只要安装一次,Monorepo 中…

数字化转型导师坚鹏:数字化时代银行网点厅堂营销5大关键点分析

数字化时代银行网点厅堂营销需要抓住以下5大关键点: 1、精准识别客户:在数字化时代,银行网点厅堂营销的关键在于精准识别客户。通过利用大数据和人工智能技术,银行可以分析客户的行为和需求,从而更好地了解客户&#…

面试题:你怎么理解System.out.println() ?

文章目录 首先分析System源码out源码分析println分析拓展知识点 你如何理解System.out.println() ? 学了这么久的面向对象编程,那如何用一行代码体现呢? 如果你能自己读懂System.out.println(),就真正了解了Java面向对象编程的含义 面向对…

如何理解低代码开发工具?

目录 一、低代码平台是什么 1. 数据输入 2. 数据流转 3. 数据加工 4. 数据输出 (1)视图:单表的数据的简单展示 (2)看板:提供单表、多表数据的多种图表组合展示 二、低代码能力 ➪ 全栈可视化编程&#xff1…

大彻大悟,期末的大学生请码住!!

不装了,我摊牌了,这东西大学生太太太需要了啊! 就是这个 写作火火,只需要输入需求,一键生成,几秒就给我写出来一篇,不满意还可以重新写,关键每次内容都不一样,完全不怕…

Redis常用的八种场景

作为一名 Java后端人员,对 Redis肯定并不陌生,Redis作为一种内存数据库,以其速度之快在编程的舞台上纵横多年,那么,Redis到底适合哪些业务场景?今天就来聊一聊。 1. 缓存/数据库 缓存(Cache&am…

电压放大器实验可以研究哪些领域

电压放大器是一种电子电路,能够对输入信号进行放大,使得输出信号具有更大的幅度。在实验中,电压放大器可以应用于许多领域,从电子学到通信领域,都能够进行研究与实践。 在电子学领域,电压放大器实验可以用于…