Python学习笔记【week04day3】概念:进程、线程、协程、GIL、同步异步、串行并行、并发

进程(Process)

  • 进程是系统进行资源分配和调度的一个独立单位
  • 程序是指令、数据及其组织形式的描述,进程是程序的实体。
  • 在面向线程设计的计算机结构中,进程是线程的容器。
  • 一个进程可以有多个线程

线程(thread)

  • 是操作系统能够进行运算调度的最小单位
  • 包含在进程之中,是进程中的实际运作单位。
  • CPU调度和分派的基本单位
  • 一个线程可以有多个协程

协程(coroutine)

  • 协程是一轻量级的线程,开销最小
  • 是一种程序组件
  • 协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。

GIL(全局解释锁)

  • GIL,the Global Interpreter Lock,直译为“全局解释锁”

  • GIL是Python解释器(Cpython)时引入的概念,GIL并不是Python的语言缺陷。

  • CPython在执行多线程的时候并不是线程安全的,为了线程间数据的一致性和状态同步的完整性。

  • Cpython中的多线程是“伪多线程”,因为GIL在单个CPU中一次只允许执行一个线程

  • 特性:

    • 弊端:对计算密集型的程序会产生影响(慢)
    • 优势:IO密集型
  • 如何解决全局解释锁对多线程的限制?

    1. 重写python编译器(官方cpython)如使用:PyPy解释器
    2. 调用C语言的链接库

同步

  • 按顺序执行。
  • 要等待前一个执行完成,才能执行下一个。

异步

  • 不按照顺序执行,并行执行。
  • 不用等待。

串行

  • 一条通道按顺序执行
  • “排一条队”

并行

  • 多条通道
  • 执行任务的数量小于或者等于cpu的数量

并发

  • 伪并行,实际上是由CPU高速交替执行的结果
  • 任务的数量大于cpu的数量
  • 用信号量来控制进程/线程的并发量

个人总结

1. .join()同步(线程/进程);不使用则是异步(线程/进程)。
2. 串行(单进程)、并行(多进程)用在进程中(跟CPU个数有关,即核数).(引出进程锁与信号量控制进程并发数)
3. 因为GIL机制(一次只允许执行一个线程)Python中常常使用“多进程+协程”的方式**

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值