python生成器的深入理解,与协程的关系,send的理解

本文深入探讨Python生成器,包括两种形式:列表生成式和带yield的函数。协程作为生成器的支持,能够实现单线程内的异步IO操作,避免传统多线程的IO阻塞问题。通过实例解析了如何使用send()进行协程间的通信,并介绍了使用协程实现的生产者-消费者模型。
摘要由CSDN通过智能技术生成

我们知道生成器有两种形式:

1.(x for _ in range(10))也就是列表生成式改成( )而不是[ ]

2.用了yield的函数

协程是什么:协程又称微线程,纤程,python中协程是通过生成器来支持的

子程序或者称为函数,子程序的互相调用会形成调用栈,需要一层层返回,子程序是默认return None的,也就是返回了函数就结束了,下次执行又是从头开始------>子程序是协程的一种特例

协程有什么好处:协程可以实现用一个线程来进行异步IO,也就是说不像函数那样,一个线程执行一个函数,当一个线程因为IO阻塞时,需要进行切换线程才能实现异步的效果

我们传统的生产者-消费者模型是通过多线程来实现的,一个线程写,一个线程读,通过线程获得锁防止数据的不一致性

但是如果用协程来实现,同一个线程内,一个函数写完,yield出来给另一个函数读,读完在通过send()再次进入写函数进行上次的后续执行

例子:

    def Gene():         #生成器函数
        print("ok")
        x = 100         
        print(x)
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值