优快云21天学习挑战第六篇_多线程及threading模块介绍

本文详细介绍了Python中多线程的基本概念,包括并发与并行的区别、threading模块的使用方法,以及如何通过Thread类创建和管理线程。此外,还讲解了线程的一些重要属性和方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


活动地址:优快云21天学习挑战赛

1. 多线程简单介绍

多线程,或者说多任务,指的是操作系统同时运行多个任务。例如,听歌、洗衣服、看视频可以同时进行,这种就是多任务。

单核CPU执行多任务:操作系统轮流让各个任务交替执行,任务1执行t1时间,切换到任务2,任务2执行t2时间,再切换到任务3,执行t3时间…如此反复执行,表面上看,每个任务交替执行,但是由于CPU的执行速度很快,在人看来就好像所有任务同时执行。

这里需要注意并发和并行的概念:

  • 并发,指任务数多于COU核数,通过操作系统的各种任务调度算法,实现用多个任务一起执行(实际上有一些任务没有在执行,但因为切换任务的速度相当快,看上去一起执行)。
    并行,指的是任务数小于或等于CPU核数,任务是同时执行的。

threading模块介绍

python中提供了thread和threading模块对线程进行操作,其中thread模块是比较底层的模块,threading模块对thread做了一些包装,使用更方便。

2.1 threading模块常用方法

threading.active_count() 返回当前处于active状态的Thread对象的个数
threading.current_thread() 返回当前Thread对象
threading.get_ident() 返回当前线程的线程标识
threading.enumerate() 返回当前处于active状态的所有Thread对象列表
threading.main_thread() 返回主线程对象,启动python解释器的线程对象
threading.stack_size() 返回创建线程时使用的栈的大小,如果指定 size参数,则用来指定后续创建的线程使用的 栈大小,size必须是0(标识使用系统默认值) 或大于32K的正整数

注:线程标识是一个非负整数,并无特殊含义,只是用来标识线程,该整数可能会被循环利用,python3.3及以后版本支持该方法。

threading模块提供了Thread、Lock、RLock、Condition、Event、Timer和Semaphore等类支持多线程。

2.2 Thread类使用

Thread是threading提供的最重要也是最基本的类,可以通过该类创建线程并控制线程的运行。

使用Thread创建线程,有两种方式:

  1. 为构造函数传递一个可调用对象
  2. 继承Thread类并在子类中重写__init__()和run()

threading.Thread类常用的方法和属性如下

  • 常用方法
    方法名 说明
方法名说明
start()启动线程
run()线程代码,用来实现线程的功能和业务逻辑,可以在子类中重写该方法自定义线程的行为
init(self,group=None,target=None,name=None,args=(),kwargs=None,daemon=None)构造函数
is_alive()判断线程是否存货
getName()返回线程名
setName()设置线程名
isDaemon()判断线程是否为守护线程
setDaemon()设置线程是否为守护线程

常用属性

属性名说明
name读取或设置线程的名字
ident线程标识,用非0数字或None(线程未被启动)
daemon标识线程是否为守护线程,默认为False
join(timeout=None)当timeout=None时,会等待至线程结束;否则,会等待至timeout时间结束,单位为秒

未完续待…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值