在實現異步調用之前我們先進行什么是同步調用和異步調用
- 同步:是指完成事務的邏輯,先執行第一個事務,如果阻塞了,會一直等待,直到這個事務完成,再執行第二個事務,順序執行
- 異步:是和同步相對的,異步是指在處理調用這個事務的之后,不會等待這個事務的處理結果,直接處理第二個事務去了,通過狀態、通知、回調來通知調用者處理結果
分析一下,下面的例子:
定義了一個裝飾器 async 和 A 、B 兩個function 函數
A 里面sleep 10s , 然后打印 a function 字符串
B 里面直接打印 b function 字符串
我們順序調用兩個功能:
A()
B( )
由於函數A在睡的狀態,我們又不希望程序被阻塞在函數A的睡的狀態,所以我們采用異步執行,即在函數A睡的狀態,讓其他的任務執行
from threading import Thread from time import sleep def async(f): def wrapper(*args, **kwargs): thr = Thread(target=f, args=args, kwargs=kwargs) thr.start() return wrapper @async def A(): sleep(10) print("函數A睡了十秒鍾。。。。。。") print("a function") def B(): print("b function") A() B()
執行結果:
#b function #函數A睡了十秒鍾。。。。。。 #a function