import threading
import time
def longIO():
print('开始耗时操作')
time.sleep(5)
print('结束耗时操作')
yield 'brotech is good'
def genCoroutine(func):
def wrapper():
gen1 = func()
gen2 = next(gen1)
def run(g):
res = next(g)
try:
gen1.send(res)
except StopIteration as e:
pass
threading.Thread(target=run, args=(gen2,)).start()
return wrapper
@genCoroutine
def reqA():
print('开始处理reqA')
res = yield longIO()
print('接收到longIo的响应数据:', res)
print('结束处理reqA')
def reqB():
print('开始处理B')
print('结束处理B')
def main():
# global gen
# gen = reqA()
# next(gen)
reqA()
reqB()
if __name__ == '__main__':
main()
协程-装饰器-异步
最新推荐文章于 2025-12-03 12:28:21 发布
本文通过一个具体的示例展示了如何使用Python的协程和多线程技术来并发执行耗时的I/O操作和其它任务。通过定义协程和启动多线程的方式,实现了reqA请求处理过程中耗时I/O操作的异步执行,并同时处理reqB请求。
1291






