协程,又称微线程,纤程,英文名Coroutine。
协程使用生成器定义:定义体中含有yield关键字
>>> from inspect import getgeneratorstate # ①
>>> def coroutine():
... print("step one")
... x = yield
... print("step two x value :", x)
...
>>> cor = coroutine() # ②
>>> getgeneratorstate(cor)
'GEN_CREATED'
>>> cor.send(None) # next(cor)效果一样 # ③
step one
>>> getgeneratorstate(cor)
'GEN_SUSPENDED'
>>> cor.send(123) # ④
step two x value : 123
Traceback (most recent call last):
File "", line 1, in
StopIteration
>>> getgeneratorstate(cor)
'GEN_CLOSED'
①协程有四种状态,可以使用inspect.getgenerator获得协程当前的状态。
定义协程函数coroutine。
②创建协程实例,获得当前状态'GEN_CREATED'。
③使用.send(None)激活协程,暂停的yield处,此时协程状态'GEN_SUSPENDED'。
④使用.send(123)传递x值,继续执行后面的语句,此时协程状态'GEN_CLOSED'。
执行的协程定义体的末尾,导致生成器向往常一样,抛出StopIteration异常。
https://blog.csdn.net/s695811494/article/details/112097682