这是我参与「第四届青训营」笔记创作活动的第14天。
1基本概念
1.1阻塞
指程序未得到所需计算资源时被挂起的状态 常见的阻塞形式有: ·网络I/O阻塞 ·磁盘I/O阻塞 ·用户输入阻塞
1.2非阻塞
程序在等待某操作过程中,自身不被阻塞可以继续处理其他的事情,则称该程序在该操作上是非阻塞的。非阻塞并不是在任何程序级别、任何情况下都可以存在的,仅当程序封装的级别可以囊括独立的子程序单元时,才可能存在非阻塞状态。
1.3同步
不同程序单元为了完成某个任务,在执行过程中需靠某种通信方式以协调一致,称这些程序单元是同步执行的,同步意味着有序。
1.4异步
为完成某个任务,不同程序单元之间过程中无需通信协调,也能完成任务的方式。不相关的程序单元之间可以是异步的,异步意味着无序。
1.5多进程
多进程就是利用CPU的多核优势,在同一时间并行地执行多个任务,可以大大提高执行效率。
1.6协程
又称微线程、纤程,协程是一种用户态的轻量级线程,拥有自己的寄存器上下文和栈,本质上是个单进程。相对于多进程,无需线程上下文切换的开销,无需原子操作锁定及同步的开销,编程模型非常简单。
2协程用法
2.1event_loop
事件循环,相当于一个无限循环。可以把一些函数注册到这个事件循环上,当满足条件发生的时候,就会调用对应的处理方法。
2.2coroutine
在Python中常指代为协程对象类型,可以将协程对象注册到时间循环中,它会被事件循环调用。可以使用async关键字来定义一个方法,这个方法在调用时不会立即被执行,而是返回一个协程对象。
2.3task
任务,它是对协程对象的进一步封装,包含了任务的各个状态。
2.4future
代表将来执行或没有执行的任务的结果,实际上和task没有本质区别。
个人总结
本文重点介绍了阻塞、非阻塞、同步、异步、多进程、协程的概念,以及event_loop、coroutine、task、future的概念。