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()