一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python協(xié)程之解釋async關(guān)鍵字原理

冬至配餃子 ? 來源:繆斯之子 ? 作者:肖新苗 ? 2022-08-24 17:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

目標(biāo)

解釋async關(guān)鍵字原理, 同時(shí)舉例說明協(xié)程中斷, 并交出控制權(quán)

例子說明

跟yield from的實(shí)現(xiàn)一樣, 每一行程序都是按順序一步一步執(zhí)行的,如果有程序不是按順序執(zhí)行,表示曾經(jīng)交出了控制權(quán),以下的例子,本來應(yīng)該應(yīng)該順序輸出1,2,但是因?yàn)閞eq1交出了控制權(quán),所以,輸出了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函數(shù)執(zhí)行之前,
先調(diào)用coroutine方法執(zhí)行一段內(nèi)容之后,再把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

'''
結(jié)果:
正常打印 2
延遲打印 1
'''


審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    905

    瀏覽量

    42810
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86771
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    micro 關(guān)鍵字搜索全覆蓋商品,并通過 API 接口提供實(shí)時(shí)數(shù)據(jù)

    micro 關(guān)鍵字搜索全覆蓋商品”并通過 API 接口提供實(shí)時(shí)數(shù)據(jù)
    的頭像 發(fā)表于 07-13 10:13 ?217次閱讀

    基礎(chǔ)篇3:掌握Python中的條件語句與循環(huán)

    不同的條件執(zhí)行不同的代碼塊。Python中的條件語句主要使用if、elif(else if的縮寫)和else關(guān)鍵字。 if語句 最簡(jiǎn)單的條件語句是if語句,它的工作方式如下: 復(fù)制代碼 if 條件表達(dá)式
    發(fā)表于 07-03 16:13

    static在單片機(jī)中的妙用

    不要從字面意思誤以為關(guān)鍵字 static 很安靜,其實(shí)它一點(diǎn)都不安靜。這個(gè)關(guān)鍵字在 C 語言里主要有兩個(gè)作用,下面我們就來介紹一下 C 語言關(guān)鍵字 static 的作用,你是否 理解全了呢?是否會(huì)用
    發(fā)表于 04-02 13:50 ?1次下載

    單片機(jī)編程關(guān)鍵字之volatile

    volatile 修飾的變量是說這變量可能會(huì)被意想不到地改變。通常對(duì)于程序員而言,單片機(jī) 中用的就算常見了volatile 是易變的,不穩(wěn)定的意思。其實(shí)對(duì)于很多人來說,根本沒見過這個(gè)關(guān)鍵字,不 知道
    發(fā)表于 04-02 13:47 ?2次下載

    進(jìn)程、線程、協(xié)程傻傻分不清?一文帶你徹底扒光它們的\"底褲\"!

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

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之Kconfig介紹

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

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

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

    C語言關(guān)鍵字分別發(fā)生在哪個(gè)階段

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

    使用TMS320C6416協(xié)處理器:Turbo協(xié)處理器(TCP)

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

    使用TMS320C6416協(xié)處理器:Viterbi協(xié)處理器(VCP)

    電子發(fā)燒友網(wǎng)站提供《使用TMS320C6416協(xié)處理器:Viterbi協(xié)處理器(VCP).pdf》資料免費(fèi)下載
    發(fā)表于 10-21 09:36 ?0次下載
    使用TMS320C6416<b class='flag-5'>協(xié)</b>處理器:Viterbi<b class='flag-5'>協(xié)</b>處理器(VCP)

    C語言關(guān)鍵字--typedef

    C語言關(guān)鍵字使用方法學(xué)習(xí)指南!
    的頭像 發(fā)表于 10-07 12:44 ?615次閱讀

    使用邊緣AI和Sitara處理器進(jìn)行關(guān)鍵字檢測(cè)

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

    typedef struct和直接struct的區(qū)別

    使用方式和靈活性上存在一些區(qū)別。下面詳細(xì)解釋這兩種方式的區(qū)別和用法。 直接使用 struct 當(dāng)你直接使用 struct 關(guān)鍵字定義一個(gè)結(jié)構(gòu)體時(shí),你創(chuàng)建了一個(gè)新的類型,但你需要通過 struct
    的頭像 發(fā)表于 08-20 10:58 ?3635次閱讀

    pytorch和python的關(guān)系是什么

    ,PyTorch已經(jīng)成為了一個(gè)非常受歡迎的框架。本文將介紹PyTorch和Python之間的關(guān)系,以及它們?cè)谏疃葘W(xué)習(xí)領(lǐng)域的應(yīng)用。 Python簡(jiǎn)介 Python是一種高級(jí)、解釋型、通用
    的頭像 發(fā)表于 08-01 15:27 ?3284次閱讀

    Python建模算法與應(yīng)用

    Python作為一種功能強(qiáng)大、免費(fèi)、開源且面向?qū)ο蟮木幊陶Z言,在科學(xué)計(jì)算、數(shù)學(xué)建模、數(shù)據(jù)分析等領(lǐng)域展現(xiàn)出了卓越的性能。其簡(jiǎn)潔的語法、對(duì)動(dòng)態(tài)輸入的支持以及解釋性語言的本質(zhì),使得Python在多個(gè)平臺(tái)
    的頭像 發(fā)表于 07-24 10:41 ?1274次閱讀