女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python協程之解釋async關鍵字原理

冬至配餃子 ? 來源:繆斯之子 ? 作者:肖新苗 ? 2022-08-24 17:58 ? 次閱讀

目標

解釋async關鍵字原理, 同時舉例說明協程中斷, 并交出控制權

例子說明

跟yield from的實現一樣, 每一行程序都是按順序一步一步執行的,如果有程序不是按順序執行,表示曾經交出了控制權,以下的例子,本來應該應該順序輸出1,2,但是因為req1交出了控制權,所以,輸出了2,1

import time
from collections import deque

from asynciox.taskx import sleep

_delay = deque()


def sleep1():
def sleep01():
yield
return None
co = sleep01.__code__
sleep01.__code__ = co.replace(co_flags=co.co_flags | 0x100)
return sleep01()


def coroutine(func):
co = func.__code__
func.__code__ = co.replace(co_flags=co.co_flags | 0x100)
return func


@coroutine
def sleep0():
'''
裝飾器@:可以理解為 sleep0=coroutine(sleep0),意思就是sleep0函數執行之前,
先調用coroutine方法執行一段內容之后,再把sleep0返回來
'''
yield
return None


async def req1():
b = await sleep0()
return 1


async def req2():
return 2


f1 = req1()
try:
result = f1.send(None)
except StopIteration as e:
print(f'正常打印 {e.value}')
pass
else:
_delay.append((f1, 1+time.time()))

f = req2()
try:
f.send(None)
except StopIteration as e:
print(f'正常打印 {e.value}')
pass

for i, v in _delay:
start = v
while True:
end = time.time()
if start < end:
try:
result = i.send(None)
except StopIteration as e:
print(f'延遲打印 {e.value}')
pass
break
pass

'''
結果:
正常打印 2
延遲打印 1
'''


審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 中斷
    +關注

    關注

    5

    文章

    904

    瀏覽量

    42526
  • python
    +關注

    關注

    56

    文章

    4825

    瀏覽量

    86201
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    單片機編程關鍵字之volatile

    volatile 修飾的變量是說這變量可能會被意想不到地改變。通常對于程序員而言,單片機 中用的就算常見了volatile 是易變的,不穩定的意思。其實對于很多人來說,根本沒見過這個關鍵字,不 知道
    發表于 04-02 13:47 ?0次下載

    進程、線程、程傻傻分不清?一文帶你徹底扒光它們的\"底褲\"!

    :\"我去關火!\"( yield 控制權) 代碼示例(Python異步爬蟲): python import asyncio import aiohttp ? async def fetch
    發表于 03-26 09:27

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-Linux內核移植之Kconfig介紹

    一下Kconfig語法規則。 Kconfig語法 Kconfig文件描述了菜單選項,每行都是以關鍵字開頭,我們逐一解釋關鍵字意義: config config config是關鍵字
    發表于 01-06 10:02

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內核移植之Kconfig介紹

    一下Kconfig語法規則。Kconfig語法Kconfig文件描述了菜單選項,每行都是以關鍵字開頭,我們逐一解釋關鍵字意義:configconfig config是關鍵字,表示一個配
    發表于 01-04 10:18

    C語言關鍵字分別發生在哪個階段

    以下C語言關鍵字,分別發生在哪個階段? 第一個,define。 首先得糾正一下,define 并不是C語言里面的關鍵字,即使加了井號,也不是。 define 屬于C語言的預處理指令,很顯然,它發生
    的頭像 發表于 11-24 10:31 ?518次閱讀

    使用TMS320C6416處理器:Turbo處理器(TCP)

    電子發燒友網站提供《使用TMS320C6416處理器:Turbo處理器(TCP).pdf》資料免費下載
    發表于 10-23 10:16 ?0次下載
    使用TMS320C6416<b class='flag-5'>協</b>處理器:Turbo<b class='flag-5'>協</b>處理器(TCP)

    C語言關鍵字--typedef

    C語言關鍵字使用方法學習指南!
    的頭像 發表于 10-07 12:44 ?541次閱讀

    使用邊緣AI和Sitara處理器進行關鍵字檢測

    電子發燒友網站提供《使用邊緣AI和Sitara處理器進行關鍵字檢測.pdf》資料免費下載
    發表于 09-02 11:30 ?0次下載
    使用邊緣AI和Sitara處理器進行<b class='flag-5'>關鍵字</b>檢測

    typedef struct和直接struct的區別

    使用方式和靈活性上存在一些區別。下面詳細解釋這兩種方式的區別和用法。 直接使用 struct 當你直接使用 struct 關鍵字定義一個結構體時,你創建了一個新的類型,但你需要通過 struct
    的頭像 發表于 08-20 10:58 ?3504次閱讀

    pytorch和python的關系是什么

    ,PyTorch已經成為了一個非常受歡迎的框架。本文將介紹PyTorch和Python之間的關系,以及它們在深度學習領域的應用。 Python簡介 Python是一種高級、解釋型、通用
    的頭像 發表于 08-01 15:27 ?3092次閱讀

    Python建模算法與應用

    Python作為一種功能強大、免費、開源且面向對象的編程語言,在科學計算、數學建模、數據分析等領域展現出了卓越的性能。其簡潔的語法、對動態輸入的支持以及解釋性語言的本質,使得Python在多個平臺
    的頭像 發表于 07-24 10:41 ?1095次閱讀

    Python在AI中的應用實例

    Python在人工智能(AI)領域的應用極為廣泛且深入,從基礎的數據處理、模型訓練到高級的應用部署,Python都扮演著至關重要的角色。以下將詳細探討Python在AI中的幾個關鍵應用
    的頭像 發表于 07-19 17:16 ?2410次閱讀

    用pycharm進行python爬蟲的步驟

    PyCharm,然后點擊“Create New Project”創建一個新的Python項目。選擇一個合適的項目名稱和位置,然后選擇Python解釋器。如果您還沒有安裝Py
    的頭像 發表于 07-11 10:11 ?1336次閱讀

    快速掌握C語言關鍵字

    C語言中的32個關鍵字你知道多少個呢?根據關鍵字的作用分為四類:數據類型關鍵字、控制語句關鍵字、存儲類型關鍵字和其它
    的頭像 發表于 07-06 08:04 ?678次閱讀
    快速掌握C語言<b class='flag-5'>關鍵字</b>

    inline關鍵字被優化導致此類函數被布局在flash內,怎么處理?

    問題解決。 但是,希望樂鑫官方把idf內源碼中的inline關鍵詞都替換為__attribute((always_inline)),因為inline關鍵字不可靠! 期待下次idf版本更新能解決此bug,自己修改idf源碼真的是權宜之計、臨時之策。
    發表于 06-21 12:03