python如何實現(xiàn)異步調(diào)用函數(shù)執(zhí)行
在實現(xiàn)異步調(diào)用之前我們先進行什么是同步調(diào)用和異步調(diào)用
- 同步:是指完成事務(wù)的邏輯,先執(zhí)行第一個事務(wù),如果阻塞了,會一直等待,直到這個事務(wù)完成,再執(zhí)行第二個事務(wù),順序執(zhí)行
- 異步:是和同步相對的,異步是指在處理調(diào)用這個事務(wù)的之后,不會等待這個事務(wù)的處理結(jié)果,直接處理第二個事務(wù)去了,通過狀態(tài)、通知、回調(diào)來通知調(diào)用者處理結(jié)果
分析一下,下面的例子:
定義了一個裝飾器 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),讓其他的任務(wù)執(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í)行結(jié)果:
#b function #函數(shù)A睡了十秒鐘。。。。。。 #a function
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Python使用eval函數(shù)執(zhí)行動態(tài)標表達式過程詳解
- 解決python調(diào)用自己文件函數(shù)/執(zhí)行函數(shù)找不到包問題
- python 輪詢執(zhí)行某函數(shù)的2種方式
- Python利用PyExecJS庫執(zhí)行JS函數(shù)的案例分析
- Python裝飾器限制函數(shù)運行時間超時則退出執(zhí)行
- python 限制函數(shù)執(zhí)行時間,自己實現(xiàn)timeout的實例
- Python使用修飾器執(zhí)行函數(shù)的參數(shù)檢查功能示例
- python函數(shù)中return后的語句一定不會執(zhí)行嗎?
- 如何在Python函數(shù)執(zhí)行前后增加額外的行為
- python 執(zhí)行函數(shù)的九種方法
相關(guān)文章
Python 解決logging功能使用過程中遇到的一個問題
這篇文章主要介紹了Python 解決logging功能使用過程中遇到的一個問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04python sort、sorted高級排序技巧分享(key的使用)
這篇文章主要介紹了python sort、sorted高級排序技巧(key的使用),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03Python創(chuàng)建對稱矩陣的方法示例【基于numpy模塊】
這篇文章主要介紹了Python創(chuàng)建對稱矩陣的方法,結(jié)合實例形式分析了Python基于numpy模塊實現(xiàn)矩陣運算的相關(guān)操作技巧,需要的朋友可以參考下2017-10-10python print()函數(shù)的end參數(shù)和sep參數(shù)的用法說明
這篇文章主要介紹了python print()函數(shù)的end參數(shù)和sep參數(shù)的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05