2 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
背景
這是一個(gè)小例子,希望能幫助你理解。說這是你的功能
async def test(): # does something
現(xiàn)在,我們?yōu)槭裁匆蛊洚惒??比如說,我們必須在另一個(gè)線程方法中使用它。
async def threaded_f(): result = await test() # Some random code to get variable Y Y = Y + result
現(xiàn)在,使 test() 異步的優(yōu)點(diǎn)是,在 result = test() 行,線程將等待 test() 的結(jié)果,因?yàn)樗姆祷刂瞪院髮⒃诖a中使用。如果它是 void 類型的函數(shù),我們可能不會(huì)等待調(diào)用并讓線程函數(shù)繼續(xù)執(zhí)行。
回答
那么,回答你的問題。是的,您可以使 get_db_data() 異步并等待,因?yàn)樗c threaded_f 函數(shù)中討論的情況相同。結(jié)果需要存儲(chǔ)在變量中。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
在回答您的問題時(shí), get_db_data 不會(huì)僅僅因?yàn)樗挥诋惒綔y(cè)試協(xié)程內(nèi)部而被視為異步。
您需要了解事件循環(huán)和協(xié)程才能很好地回答您的問題。
如果您的同步例程沒有阻塞,那么您可以擺脫它,但您需要徹底了解它在做什么,以確保它不會(huì)導(dǎo)致意外的延遲。如果您不希望您的程序被 get_db_data 阻止,那么您需要使其可等待,例如協(xié)程。
添加回答
舉報(bào)