在實現(xiàn)異步調(diào)用之前我們先進行什么是同步調(diào)用和異步調(diào)用
-
同步:是指完成事務的邏輯,先執(zhí)行第一個事務,如果阻塞了,會一直等待,直到這個事務完成,再執(zhí)行第二個事務,順序執(zhí)行
- 異步:是和同步相對的,異步是指在處理調(diào)用這個事務的之后,不會等待這個事務的處理結果,直接處理第二個事務去了,通過狀態(tài)、通知、回調(diào)來通知調(diào)用者處理結果
分析一下,下面的例子:
定義了一個裝飾器 async 和 A 、B 兩個function 函數(shù)
A 里面sleep 10s , 然后打印 a function 字符串
B 里面直接打印 b function 字符串
我們順序調(diào)用兩個功能:
A()
B( )
由于函數(shù)A在睡的狀態(tài),我們又不希望程序被阻塞在函數(shù)A的睡的狀態(tài),所以我們采用異步執(zhí)行,即在函數(shù)A睡的狀態(tài),讓其他的任務執(zhí)行
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("函數(shù)A睡了十秒鐘。。。。。。") print("a function") def B(): print("b function") A() B()
執(zhí)行結果:
#b function #函數(shù)A睡了十秒鐘。。。。。。 #a function
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
