python使用多线程写生成器_Python学习——多线程,异步IO,生成器,协程

本文介绍了Python中的生成器、协程和多线程。重点讲解了yield关键字如何使函数变为生成器,以及生成器的执行方式和通过send方法实现的协程通信。此外,还提到了Python的异步IO机制和多线程中的锁机制,强调了锁在资源同步中的关键作用,并指出多线程在适当场景下效率可与协程相当。
摘要由CSDN通过智能技术生成

Python的语法是简洁的,也是难理解的。

比如yield关键字:

def fun():

for i in range(5):

print('test')

x = yield i

print('good', x)

if __name__ == '__main__':

a = fun()

# print(a.__next__())

# print(a.__next__())

# print(a.__next__())

y = a.send(None)

y = a.send(-1)

y = a.send(-2)

#print(y)

凡是包含yield关键字的函数都不再是一个函数,而成为一个生成器(或迭代器,Generator)

Generator包含一个栈帧(Stack Frame),它维护Generator自身的执行状态,即便生成器的执行被暂停而返回到母程序中,下一次依然能恢复Generator的上一次的状态,从一个yield执行到下一个yield语句前。这就是生成器的执行方式。

迭代一个执行器可以使用send方法,也可以使用__next__方法,send方法能给Generator传递即时的数据,同时接收Generator内部执行状态,这个过程就是协程通信的基础。

而__next__方法只能从Generator接收内部执行状态,而无法向Generator中传入信息,所以__next__不能完成通信,因为通信不能是单向的。

__next__

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值