第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何等待(不使用 await 關(guān)鍵字)asyncio 任務(wù)完成并檢索結(jié)果?

如何等待(不使用 await 關(guān)鍵字)asyncio 任務(wù)完成并檢索結(jié)果?

回首憶惘然 2022-11-01 16:59:20
我們知道,在async函數(shù)內(nèi)部,代碼不會繼續(xù)執(zhí)行,直到等待的協(xié)程完成執(zhí)行:await coro()# orawait asyncio.gather(coro_1(), coro_2())# Code below will run AFTER the coroutines above finish running = desired effect在函數(shù)外部(或內(nèi)部),async可以將協(xié)程添加到事件循環(huán)中asyncio.create_task(coro()),返回一個Task 對象。在我的場景中,任務(wù)被添加到 >>> 現(xiàn)有的運(yùn)行循環(huán) <<<中,隨后的代碼將繼續(xù)執(zhí)行,而無需等待該任務(wù)/協(xié)程完成。當(dāng)然,可以在任務(wù)結(jié)束時執(zhí)行回調(diào)函數(shù)task_obj.add_done_callback(callback_func)。asyncio.create_task(coro())在 Jupyter Notebooks / Jupyter Lab 上特別有用,因?yàn)?Jupyter 在后臺運(yùn)行事件循環(huán)。調(diào)用asyncio.get_event_loop()將檢索 Jupyter 的事件循環(huán)。在 Jupyter Notebook 中,我們無法調(diào)用asyncio.run(coro())或者loop.run_until_complete()因?yàn)檠h(huán)已經(jīng)在運(yùn)行(除非我們在一個單獨(dú)的進(jìn)程中運(yùn)行異步代碼并在該進(jìn)程中創(chuàng)建一個新的事件循環(huán),但這不是我正在尋找的用例)。所以我的問題是我如何才能等待(從異步函數(shù)外部=不使用await關(guān)鍵字)異步任務(wù)(或任務(wù)組)在執(zhí)行后面的代碼之前完成并檢索結(jié)果?tsk_obj = asyncio.create_task(coro())   # adds task to a (in my case) running event loop# QUESTION:# What can be done to await the result before executing the rest of the code below?print('Result is:', tsk_obj.result())#  ^-- this of course will execute immediately  = NOT the desired effect#      (the coroutine is very likely still running on the event loop and the result is not ready)
查看完整描述

1 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個贊

如果沒有并發(fā)執(zhí)行,這在邏輯上是不可能的。等待異步函數(shù)之外的東西意味著阻塞當(dāng)前線程。但是,如果當(dāng)前線程被阻塞,則任務(wù)可能無法運(yùn)行。您實(shí)際上可以編寫這樣的代碼(例如,等待在任務(wù)結(jié)束時設(shè)置的 threading.Event 對象)。但是由于我給出的原因,程序會死機(jī)。



查看完整回答
反對 回復(fù) 2022-11-01
  • 1 回答
  • 0 關(guān)注
  • 305 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號