python3协程数量限制_多任务(3):协程

本文介绍了Python3中的协程,包括异步IO的背景、最初的协程概念、如何通过生成器进化成协程,以及使用async/await简化异步编程。还展示了如何用协程改进生产者-消费者模型,以及asyncio库在异步IO中的应用。
摘要由CSDN通过智能技术生成

代码环境:python3.6

上一篇文章我们讲了 python 中多线程的使用:点击阅读,现在我们讲讲 python 中的协程。

异步IO

我们知道,CPU 速度远远快于磁盘、网络等 IO。在 IO 编程中,假如一个 IO 操作阻塞了当前线程,会导致其他代码无法执行,所以我们使用多线程或者多进程来并发执行代码。

但是,系统资源是有限的,一旦线程数量过多,CPU 的时间就花在线程切换上了,真正执行代码的时间下降,导致性能严重下降。

针对这个问题,我们需要另一种解决方法:异步 IO。

异步 IO,即当代码需要执行一个耗时的 IO 操作时,它只发出 IO 指令,并不等待 IO 结果,然后就去执行其他代码了。一段时间后,当 IO 返回结果时,再通知 CPU 进行处理。

python中最初的协程

了解最初的协程有助于我们理解后面现代协程的用法。

协程这个概念并不是 python 首次提出的,而是从其他语言借鉴过来的。

我们知道,两个普通函数的调用是按顺序的,比如A函数调用B函数,B执行完毕返回结果给A,A执行完毕。

协程看上去也是函数,如果协程A调用协程B,在执行过程中,协程B可以中断,转而执行A,再在适当的时候返回B接着从中断处往下执行。

协程的这种执行特点,恰好符合我们的需求:通过协程实现异步 IO 编程。

生成器进化成协程

python 基于 generator 进行一系列功能改进后得到协程,语法上都

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值