目标
协程中断, 并交出控制权
想说的话
本系列主要侧重理解, 而不是编程初期的知识学习, 当我想要理解协程中断的时候, 搜索了很多文章, 都指向需要使用asyncio.get_event_loop(), 但这是一个封装了很多逻辑的代码, 为了直观理解, 编写了如下例子
例子说明
每一行程序都是按顺序一步一步执行的,如果有程序不是按顺序执行,表示曾经交出了控制权,以下的例子,本来应该应该顺序输出1,2,但是因为req1交出了控制权,所以,输出了2,1
import time
from collections import deque
_delay = deque()
def sleep0():
yield
return None
def req1():
yield
b = yield from sleep0()
return 1
def req2():
yield
return 2
f1 = req1()
f1.send(None)
try:
result = f1.send(None)
except StopIteration as e:
print(f'正常打印 {e.value}')
pass
else:
_delay.append((f1, 1+time.time()))
f = req2()
f.send(None)
try:
f.send(None)
except StopIteration as e:
print(f'正常打印 {e.value}')
pass
for i, v in _delay:
start = v
while True:
end = time.time()
if start < end:
try:
result = i.send(None)
except StopIteration as e:
print(f'延迟打印 {e.value}')
pass
break
pass
'''
结果:
正常打印 2
延迟打印 1
'''
审核编辑:刘清
-
中断
+关注
关注
5文章
913浏览量
43592 -
python
+关注
关注
57文章
4860浏览量
89661
发布评论请先 登录
NICE协处理器接口信号解读--以demo为例
利用Verdi调试协处理器的实现步骤
MD5信息摘要算法实现二(基于蜂鸟E203协处理器)
NICE协处理器demo分析及测试
基于E203 NICE协处理器扩展指令
基于E203 NICE协处理器扩展指令2.0
简析Modbus和MQTT协议
简析Modbus与MQTT的区别
请问NICE协处理器与传统ocb外设相比的优势有什么?
10分钟上手写代码,LuatOS协程轻松掌握!

python协程之yield break简析
评论