Python语言中的协程(生产者-消费者举例)

协程又被称为微线程,它的特点是不需要进行线程的切换,因为整个程序的执行过程中,只有一个线程.没有线程切换的开销,和多线程相比较,线程数量越多,协程的性能就越高.它子程序的执行是由程序自身控制.又由于只存在一个线程,所以不存在什么变量共享等冲突问题,也不存在锁机制,更不会出现死锁的情况.这样一来,执行效率就比多线程高的多.为了有效利用多核CPU,我们可以用进程+协程,既充分利用多核,又充分发挥协程的高效率,可获得极高的性能。
看例子:

传统的生产者-消费者模型是一个线程写消息,一个线程取消息,通过锁机制控制队列和等待,但一不小心就可能死锁。

如果改用协程,生产者生产消息后,直接通过yield跳转到消费者开始执行,待消费者执行完毕后,切换回生产者继续生产,效率极高:

# 注意 变成generator的函数,在首次调用的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行
def consumer():
    r = ''
    print('lalalalalaal') # 只有第一次会执行(启动生成器), 之后再调用生成器就会从yield处执行
    while True:
        n = yield r 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值