python中的异步、同步

一、实现异步

 

 1 '''
 2 @Author  :Lucian Lu
 3 @Date    :2021/12/22 13:57 
 4 '''
 5 import time, threading
 6 
 7 
 8 def genCoroutine(func):
 9     def wrapper(*args, **kwargs):
10         gen1 = func()
11         gen2 = next(gen1)   # 此时表示执行的是reqa这个生成器
12         def run(g):
13             res = next(g)   # 此时表示执行的是longIo这个生成器
14             try:
15                 gen1.send(res)
16             except StopIteration as e:
17                 pass
18 
19         threading.Thread(target=run, args=(gen2,)).start()
20 
21     return wrapper
22 
23 
24 def longIo():
25     print('开始耗时操作')
26     time.sleep(5)
27     print('结束耗时操作')
28     yield "luyizhou is good man"
29 
30 
31 @genCoroutine
32 def reqa():
33     print('开始处理A')
34     res = yield longIo()
35     print('接收到longIO的响应数据:', res)
36     print('结束处理a')
37 
38 
39 def reqb():
40     print('开始处理B')
41     time.sleep(2)
42     print('结束处理b')
43 
44 
45 def main():
46     reqa()
47     reqb()
48     while True:
49         time.sleep(0.1)
50         pass
51 
52 
53 if __name__ == '__main__':
54     main()

 

posted @ 2021-12-23 13:41  luyizhou  阅读(366)  评论(0)    收藏  举报