摘要:問題背景是版本引入的標(biāo)準(zhǔn)庫,直接內(nèi)置了對異步的支持。最近我在多線程調(diào)用使用方法的時(shí)候,出現(xiàn)報(bào)錯(cuò)后來查過一些資料,發(fā)現(xiàn)不允許嵌套事件出現(xiàn),需要引入。總結(jié)給自己留個(gè)記錄,防止忘了。如果對你有用的話,點(diǎn)個(gè)贊吧。
asyncio是Python 3.4版本引入的標(biāo)準(zhǔn)庫,直接內(nèi)置了對異步IO的支持。最近我在多線程調(diào)用使用asyncio方法的時(shí)候,出現(xiàn)報(bào)錯(cuò):
This event loop is already running
后來查過一些資料,發(fā)現(xiàn)asyncio不允許嵌套事件出現(xiàn),需要引入nest_asyncio。
引入nest_asyncio模塊
pip install nest_asyncio -i https://pypi.douban.com/simple
代碼添加
import nest_asyncionest_asyncio.apply()
其他的不需要改動(dòng)。
給自己留個(gè)記錄,防止忘了。如果對你有用的話,點(diǎn)個(gè)贊吧。
?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/124514.html
摘要:所以在第一遍閱讀官方文檔的時(shí)候,感覺完全是在夢游。通過或者等待另一個(gè)協(xié)程的結(jié)果或者異常,異常會(huì)被傳播。接口返回的結(jié)果指示已結(jié)束,并賦值。取消與取消不同。調(diào)用將會(huì)向被包裝的協(xié)程拋出。任務(wù)相關(guān)函數(shù)安排協(xié)程的執(zhí)行。負(fù)責(zé)切換線程保存恢復(fù)。 Tasks and coroutines 翻譯的python官方文檔 這個(gè)問題的惡心之處在于,如果你要理解coroutine,你應(yīng)該理解future和tas...
摘要:解決方案我們可以使用函數(shù)建立一個(gè)新的事件循環(huán),并使用設(shè)置全局的事件循環(huán),這時(shí)候就可以多次運(yùn)行異步的事件循環(huán)了,不過最好保存默認(rèn)的并在事件循環(huán)結(jié)束的時(shí)候還原回去。 背景 我們在Python異步程序編寫中經(jīng)常要用到如下的結(jié)構(gòu) import asyncio async def doAsync(): await asyncio.sleep(0) #... if __name__...
摘要:是并發(fā)的一種方式。并不能帶來真正的并行。可交給執(zhí)行的任務(wù),稱為協(xié)程。輸出等待三秒鐘程序退出現(xiàn)在改用輸出等待三秒鐘程序沒有退出三秒鐘過后,結(jié)束,但是程序并不會(huì)退出。但是如果關(guān)閉了,就不能再運(yùn)行了此處異常建議調(diào)用,以徹底清理對象防止誤用。 所謂「異步 IO」,就是你發(fā)起一個(gè) IO 操作,卻不用等它結(jié)束,你可以繼續(xù)做其他事情,當(dāng)它結(jié)束時(shí),你會(huì)得到通知。 Asyncio 是并發(fā)(concurr...
摘要:是之后引入的標(biāo)準(zhǔn)庫的,這個(gè)包使用事件循環(huán)驅(qū)動(dòng)的協(xié)程實(shí)現(xiàn)并發(fā)。沒有能從外部終止線程,因?yàn)榫€程隨時(shí)可能被中斷。上一篇并發(fā)使用處理并發(fā)我們介紹過的,在中,只是調(diào)度執(zhí)行某物的結(jié)果。 asyncio asyncio 是Python3.4 之后引入的標(biāo)準(zhǔn)庫的,這個(gè)包使用事件循環(huán)驅(qū)動(dòng)的協(xié)程實(shí)現(xiàn)并發(fā)。asyncio 包在引入標(biāo)準(zhǔn)庫之前代號 Tulip(郁金香),所以在網(wǎng)上搜索資料時(shí),會(huì)經(jīng)常看到這種花的...
摘要:具有以下基本同步原語子進(jìn)程提供了通過創(chuàng)建和管理子進(jìn)程的。雖然隊(duì)列不是線程安全的,但它們被設(shè)計(jì)為專門用于代碼。表示異步操作的最終結(jié)果。 Python的asyncio是使用 async/await 語法編寫并發(fā)代碼的標(biāo)準(zhǔn)庫。通過上一節(jié)的講解,我們了解了它不斷變化的發(fā)展歷史。到了Python最新穩(wěn)定版 3.7 這個(gè)版本,asyncio又做了比較大的調(diào)整,把這個(gè)庫的API分為了 高層級API和...
閱讀 2441·2021-11-23 09:51
閱讀 1867·2021-10-13 09:40
閱讀 1372·2021-09-30 10:01
閱讀 590·2021-09-26 09:46
閱讀 2233·2021-09-23 11:55
閱讀 1385·2021-09-10 10:51
閱讀 2240·2021-09-09 09:33
閱讀 2227·2019-08-29 17:25