没有合适的资源?快使用搜索试试~ 我知道了~
ython-411645.pdf
需积分: 9 0 下载量 113 浏览量
2022-04-24
08:52:01
上传
评论
收藏 117KB PDF 举报
温馨提示
试读
7页
ython-411645.pdf
资源详情
资源评论
资源推荐
【【python内功修炼内功修炼006】:基于】:基于threading模块的多线程操作模块的多线程操作
(详解)(详解)
文章目录文章目录一、threading模块介绍二、:threading模块主要对象三、threading.Thread对象1、语法2、参数3、常用方法四、
python开启线程的两种方法1、使用threading.Thread 线程对象2、继承父类threading.Thread五、Threading模块主要函数1、
主要函数介绍2、代码实例六、守护线程和非守护线程1、守护线程介绍2、守护进程实例 (1)3、守护进程实例 (2)七、线程同
步(Look)1、代码案例2、Look线程同步案例3、 with语法用于线程同步案例八、多线程与多进程的理解(代码实例)1、 共享数
据(内存地址)2、进程和线程的执行速度3、其他案例
一、一、threading模块介绍模块介绍
注:注: 本文使用的Python版本是Python3.8,threading模块内容较多,将分成两篇博客介绍本文主要着重于threading的基本介
绍和使用。
Python的线程操作在python2.7和python3版本中引入threading模块,它是基于原thread模块上构造成的较高级别线程接口。
thread模块所有的功能在threading中都能得到体现。参考: https://docs.python.org/zh-cn/3.7/library/threading.html
目前threading模块中包含了关于线程操作的丰富功能,包括:常用线程函数,线程对象,锁对象,递归锁对象,事件对象,
条件变量对象,信号量对象,定时器对象,栅栏对象等
二、:二、:threading模块主要对象模块主要对象
对象对象 功能功能
Thread 执行(开启)线程对象
Lock Lock锁,线程同步
RLock 和lock用法基本一致,但是对RLock进行多次acquire()操作,程序不会阻塞。也叫递归锁
Condition 条件变量对象,使得一个线程等待另一个线程满足特定条件
Event 条件变量的通用版本,任意数量的线程等待某个事件的发生,该事件发生后所有线程将被激活
Semaphore 为线程间的共享资源提供了一个计数器,如果没有可用资源时会被阻塞
BoundedSemaphone 与Semaphore相似,不过它不允许超过初始值
Timer 与Thread相似,不过运行前要等待一段时间
Barrier 创建一个”障碍“,必须要达到指定数量的线程才能继续
三、三、threading.Thread对象对象
threading模块执行和开启线程,是基于Tread对象实现的, 目前Thread还没有优先级和线程组的功能,而且创建的线程也不
能被销毁、停止、暂定、恢复或中断。
1、语法、语法
threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
如果这个类的初始化方法被重写,请确保在重写的初始化方法中做任何事之前先调用threading.Thread类的__init__方法。
2、参数、参数
group:: 默认为None,即不用设置,因为这个参数是为了以后实现ThreadGroup类而保留的。
target:: 在run方法中调用的对象,即需要开启线程的可调用对象,比如函数或方法。
name:: 线程名称,默认为“Thread-N”形式的名称,N为较小的十进制数。
args:: 在参数target中传入的可调用对象的参数元组,默认为空元组()。
kwargs:: 在参数target中传入的可调用对象的关键字参数字典,默认为空字典{}。
daemon:: 默认为None,即继承当前调用者线程(即主进程/主线程)的守护模式属性,如果不为None,则被设置为“守护模
式”。
3、常用方法、常用方法
start():: 开启线程活动。它将使得run()方法在一个独立的控制线程中被调用,需要注意的是同一个线程对象的start()方法只能
被调用一次,如果调用多次,则会报RuntimeError错误。
run():: 此方法代表线程活动。如果是继承类,则需要将执行代码放在run()下
join(timeout=None):: 让当前调用者线程等待,直到线程结束,timeout参数是以秒为单位的浮点数,用于设置操作超时的时
间,返回值为None。join方法可以被调用多次。如果对当前线程使用join方法(即线程在内部调用自己的join方法),或者在
线程没有开始前使用join方法,都会报RuntimeError错误。
name:: 线程的名称字符串,多个线程可以赋予相同的名称,初始值由初始化方法来设置。
ident:: 线程的标识符,如果线程还没有启动,则为None。ident是一个非零整数,参见threading.get_ident()函数。当线程结
束后,它的ident可能被其他新创建的线程复用,当然就算该线程结束了,它的ident依旧是可用的。
is_alive():: 线程是否存活,返回True或者False。在线程的run()运行之后直到run()结束,该方法返回True。
daemon:: 表示该线程是否是守护线程,True或者False。设置一个线程的daemon必须在线程的start()方法之前,否则会报
chemicalJava
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0