Python 多线程

为什么说python线程是伪线程?

但是在python中,python虚拟机要求在主循环中同时只能有一个控制线程在运行,这也就意味着即使python解释器中可以运行多个线程,但是在任意时刻只有一个线程会被python解释器执行。

而这正是由**GIL(全局解释器锁)**来控制的,它保证了同一时刻只能有一个线程运行,而在python多线程环境下,python虚拟机按照下面的 方式运行:

  1. 设置GIL

  2. 切换进一个线程取运行

  3. 执行下面操作之一:

    • 执行指定数量的字节码指令
    • 线程主动让出控制权(time.sleep())
  4. 把线程设置会睡眠状态(切换出线程)

  5. 解锁GIL

  6. 重复以上步骤

这也就是为什么说python的多线程适合于IO密集型,而不适合计算密集型任务。

什么是守护线程

守护线程可以视为其余非守护线程的保姆,只有所有非守护线程都退出了,守护线程才会终止。

threading模块支持守护线程,其工作方式是:守护线程一般是一个等待客户端请求服务的服务器。如果没有客户端请求,守护线程就是空闲的。

python中的多线程

python中提供了很方便的库来提供多线程,该库就是Threading库。

Threading.Thread类

首先我们先来介绍一下它的初始化函数,再来介绍它的相关属性,最后,我们介绍它常用的一些方法。

###__init__

class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
  • group: 预留参数,用于扩展
  • target: run()方法所调用的函数,默认为None。
  • name: 线程名字,默认为" Thread-N"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值