Python--线程基础

相关概念

线程是"轻量级进程",是计算机中CPU进行任务调度的最小单位。

线程属于进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,且至少有一个线程。

每个进程开始的创建的时候,都会随之创建一个主线程。

进程负责分配和隔离资源(CPU, 内存等),而线程负责执行具体的任务。

线程没有自己的系统资源,同一个进程下的多个线程共享该进程中的系统资源。

线程也需要操作系统的创建、管理、切换和回收,但是其所需的系统开销要比进程的相关操作的系统开销要小很多。

创建线程

每个线程都是threading.Thread类的实例对象,并通过其start方法来创建线程。

通过指定Thread类的target参数,来指定线程处理的任务。

target参数可以是函数名,也可以是实例对象的方法名。

实例化Thread类方式

  • target: 设定线程执行的任务,可以是函数名或方法名
  • name:设定线程的名称
  • args:设定传入target实参的,位置参数
  • kwargs:设定传入target实参的,命名参数
 # 通过实例化Thread类,并传入函数的方式import timefrom threading import Thread​def task(name):time.sleep(1)print(f'线程{name}执行结束')​​​if __name__ == '__main__':for i in range(3):thread = Thread(target=task, args=(i,))thread.start()​print('进程代码执行完毕')

 # 通过实例化Thread类,并传入方法的方式import timefrom threading import Thread​class Human:def __init__(self, name):self.name = namedef eat(self, food):time.sleep(1)print(f'我吃完{food}了')​def drink(self, drinking):time.sleep(1)print(f'我喝完{drinking}')​​if __name__ == '__main__':human = Human('Jack')eat = Thread(target=human.eat,args=('米饭',))eat.start()drink = Thread(target=human.drink, kwargs={'drinking': 'OrangeJuice'})drink.start()print('进程代码执行完毕')

继承Thread类方式

  • 通过重写__init__方法,定制线程的初始化工作
  • 通过重写run方法,定制线程中执行

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

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

相关文章

Java使用分布式锁来防止重复提交

1.分布式锁的使用场景 分布式锁的使用场景包括以下几个方面: 1)防止重复操作:在某些业务场景下,可能会出现多个客户端同时对同一资源进行修改或者访问的情况。为了避免这种情况发生,可以采用分布式锁来保证只有一个客户…

版本控制系统:Git 纯应用(持续更新)

基本操作 ctrl上行键:上次代码 本地仓库:Git init 新建文件:touch xxxx.xxx 查看状态:Git status 文件从工作区——暂存区:Git add ./文件名(.是通配符代表所有) 暂存区——仓库:Git commit -m &…

PLC边缘网关在实际应用中的作用-天拓四方

随着工业自动化的快速发展,PLC已成为工业自动化领域中不可或缺的核心设备。然而,随着工业物联网的兴起,PLC设备面临着数据集成、远程监控以及安全性等方面的挑战。为了解决这些问题,PLC边缘网关应运而生,它作为连接PLC…

极简通俗VAE

一、VAE 背景:VAE什么变分自编码器,听起来起名都头大,用大白话告诉你。 把一个复杂图片压缩成两个参数,用这个参数采样再复原。 这个简单的东西是两个参数,均值和方差,用(0,1&…

Idea-Idea配置gitIgnore忽略文件

背景 在项目提交到Git过程中,总有一些文件,例如.idea和.iml等这些我们不想提交的,直接添加进入gitIgnore文件中自动忽略掉。 Idea安装插件 1、在File->Setting->Plugins中搜索gitIgnore并安装插件 2、项目右键new->.ignore File-…

【mybatis】mybatis-plus简单使用

1、简介 MyBatis-Plus(简称MP)是MyBatis的增强工具,它在MyBatis的基础上进行了扩展,以简化开发、提高效率。本案例是一个MyBatis-Plus的简单使用案例,包括项目的初始化、配置、实体类、Mapper接口以及基本的CRUD操作。…

企业LoRA模型定制服务

🌈 最强AI绘画模型训练、定制服务公司出炉 —— 触站AI,设计界的智能魔法师 🧙‍♂️ 🎨 触站AI,用智能技术解锁设计的无限可能 🎨在创意与科技交织的今天,触站AI以其AI绘画模型训练和定制服务…

交易时你是否会考虑多种观点呢?

在交易过程中,考虑多种观点并融入多元化分析,是提升交易决策质量和最终交易结果的关键因素之一。 单一观点或分析方法往往容易受到个人偏见、情绪或信息局限性的影响。通过引入多元化分析,我们可以从不同角度审视市场,减少因主观…

iPhone苹果手机怎么取消腾讯视频VIP会员自动续费?

腾讯视频会员分为VIP(同时在线设备5台、同时播放设备2台;)和SVIP(同时在线设备8台、同时播放设备3台;),在iPhone苹果手机上开通腾讯视频连续包月、包季、包年后,需要手动取消才能关闭…

linux centos tomcat 不安全的HTTP请求方法

1、页面查看 2、在linux主机可使用此命令查看 curl -v -X OPTIONS http://实际地址 3、进入tomcat conf目录vim web.xml&#xff0c;增加以下内容 <!-- close insecure http methods --> <security-constraint><web-resource-collection><web-resource…

从零到一:全面掌握模板机部署与虚拟机克隆的实训指南【实训Day01】

一、模板机的部署 1.设置好子网ip和子网掩码以及网关 保证有NAT模式 子网IP着重记住前三段&#xff1a;192.168.222.xxx 2.开始建立虚拟机 注意&#xff1a;路径中不要有中文 3.安排8个内核 4.安排2GB内存 创建初步成功&#xff0c;接着 5.开启此虚拟机 6.选择中文 7.日期&…

Java中的面向对象编程思想

Java中的面向对象编程思想 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称OOP&#xff09;是一种软件开发方法&#xff0c;它…

高校实训室:康养实训室在智慧养老服务方面的应用

随着人口老龄化的加剧&#xff0c;智慧养老服务成为应对养老挑战的重要途径。高校康养实训室作为培养专业人才和开展科研创新的重要场所&#xff0c;在智慧养老服务方面发挥着关键作用。本文深入探讨了康养实训室在智慧养老服务中的应用&#xff0c;包括技术应用、人才培养、实…

Ubuntu手动编译源码安装Python

Ubuntu系统手动编译源码安装Python 0. 下载源码压缩包 在python官网找到所需版本的python安装包&#xff0c;下载到Ubuntu系统中 https://www.python.org/downloads/ 本文以python3.8.2为例演示编译过程 ‍ 1 手动编译安装 1.1 解压压缩包 tar -zxvf Python-3.8.2.tgz可…

【计算机网络】计算机网络的分类

计算机网络的分类 导读一、按分布范围分类1.1 广域网&#xff08;WAN&#xff09;。1.2 城域网&#xff08;MAN&#xff09;1.3 局域网&#xff08;LAN&#xff09;1.4 个人区域网&#xff08;PAN&#xff09;1.5 多处理器系统 二、按传输技术分类2.1 广播式网络2.2 点对点网络…

统信UOS+银河麒麟系统开发、运维使用技巧与疑难问题解决经验

文章目录 1.开发运维常用技巧1.1 设置root密码1.2 安装g编译器1.3 系统无法登录进入命令行终端1.4 开机启动ssh服务1.5 查看显卡GPU使用率1.5.1 AMD显卡查看GPU使用率1.5.2 景嘉微显卡1.5.3 英伟达显卡 1.6 OpenGL接口版本查看1.6.1 查看OpenGL接口版本1.6.2 查看OpenGL ES接口…

LaySNS模板仿RiPro日主题素材源码资源下载响应式CMS模板

LaySNS模板仿RiPro日主题素材源码资源下载响应式CMS模板&#xff0c;该主题是网上泛滥的RiPro主题仿制而成的laysns模板&#xff0c;原主题是很强大的。 全站功能是通过ajax响应实现的&#xff0c;另外就是网上流传得比较多的是美化版。 主要说明&#xff1a;付费/回复下载功…

面试题003-Java-Java多线程(上)

面试题003-Java-Java多线程(上) 目录 面试题003-Java-Java多线程(上)题目自测题目答案1. 什么是线程和进程? 线程与进程的关系和区别&#xff1f;2. 为什么要使用多线程?3. 什么是线程上下文切换?4. 什么是线程死锁? 如何避免死锁?5. 乐观锁和悲观锁了解么&#xff1f;如何…

用Chromatix进行tuning流程

##一、基本调试 ###1、工程初始配置&#xff1a; 这个工具就是一个图形化的参数编辑器&#xff0c;其实所有tuning中的效果参数直接改文件参数酒醒&#xff0c;工具的好处是&#xff1a;带有检查错误和模拟的功能以及一些校验工具和脚本。 初始化可以中需要的配置&#xff1a;t…

鸿蒙如何打包应用程序

总结鸿蒙应用程序包 之前文章详细讲解了关于三种程序包的内容&#xff0c;现在简单总结一下&#xff1a; 1. 总结 首先需要搞清楚鸿蒙项目的模块Module的分类: Module分为“Ability”和“Library”两种类型 HAP HAP: Harmony Ability Package , 叫做鸿蒙Ability包。 “Abil…