国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

python協程之yield break簡析

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

掃碼添加小助手

加入工程師交流群

目標

協程中斷, 并交出控制權

想說的話

本系列主要側重理解, 而不是編程初期的知識學習, 當我想要理解協程中斷的時候, 搜索了很多文章, 都指向需要使用asyncio.get_event_loop(), 但這是一個封裝了很多邏輯的代碼, 為了直觀理解, 編寫了如下例子

例子說明

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


import time
from collections import deque

_delay = deque()


def sleep0():
yield
return None


def req1():
yield
b = yield from sleep0()
return 1


def req2():
yield
return 2


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

f = req2()
f.send(None)
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

    文章

    917

    瀏覽量

    43758
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    解析Linux的進程、線程和協程

    )輕量級:相對于進程,線程的創建和切換開銷較小。 (3)同步與通信:線程之間需要通過同步機制(如互斥鎖、信號量)來保證數據的一致性。 程(Coroutine) 程是一種輕量級的用戶態線程,它們
    發表于 12-22 11:00

    NICE處理器接口信號解讀--以demo為例

    的復位信號。 nice_active表示nice處理器是否正在工作,但該信號在上層文件中未例化,如下圖所示。 nice_mem_holdup信號在e203_lsu_ctrl.v文件中用于覆蓋cpu
    發表于 10-31 08:01

    利用Verdi調試處理器的實現步驟

    本次給大家介紹的是利用Verdi調試處理器的實現步驟。 有時為了觀察處理器運行情況,需要查看處理器接口的信號波形,此時可以用Verdi來查看主處理器發給處理器的自定義指令以進一
    發表于 10-30 08:26

    MD5信息摘要算法實現二(基于蜂鳥E203處理器)

    本設計首先根據MD5處理器的功能設計MD5算法IP核,軟件部分使用串口程序助手進行64位加解密結果的輸出,E203內核根據地址取出對應的數據,使用相關的指令進行傳輸顯示。通過NICE接口將MD5
    發表于 10-30 07:54

    蜂鳥E203處理器EAI指令及接口

    ,各種不同的組合代表了不同的指令類型,我們用到了預定義的custom-3指令擴展處理器指令,因此指令的opcode為7’b1111011。 由于蜂鳥E203處理器核基于Custom指令進行
    發表于 10-24 07:23

    NICE處理器demo分析及測試

    實現思路: 1.硬件設計,編寫相應的verilog文件,需要注意的是NICE處理器定義了一些基本的接口; 2.編寫驅動,通過內聯匯編的偽指令.insn配置相關的驅動設置; 3.編寫用于測試
    發表于 10-23 07:05

    基于E203 NICE處理器擴展指令

    1、實現功能 基于官方提供的demo nice的硬件代碼,設計一個基于e203 nice處理的加法器。 2NICE處理器理論學習 nice處理器的作用主要是用于控制通路的管理 去年
    發表于 10-21 14:35

    基于E203 NICE處理器擴展指令2.0

    實現功能:基于官方提供的demo nice的硬件代碼,設計一個基于e203 nice處理的加法器。 NICE處理器理論學習 nice處理器的作用主要是用于控制通路的管理 去年國一的
    發表于 10-21 10:39

    Modbus和MQTT協議

    Modbus和MQTT協議在設計目標、通信模式、應用場景、網絡結構、數據傳輸效率、設備兼容性及安全性等方面存在顯著差異,具體分析如下: 一、設計目標與定位 Modbus :誕生于1979年,由施耐德公司開發,最初為串行通信(RS232/RS485)設計。其目標是解決工業設備(如PLC、傳感器、儀表)之間的短距離、點對點或小范圍組網通信,核心是設備間直接的數據讀寫控制。Modbus屬于工業現場總線協議,側重底層設備的高效數據交互。 MQTT :2013年由OASIS標準化,最初
    的頭像 發表于 07-10 14:25 ?774次閱讀

    Modbus與MQTT的區別

    Modbus和MQTT是工業領域中兩種不同的通信協議,在設計目標、應用場景、通信模式等方面存在顯著差異,以下從多個維度兩者的區別: 1.設計目標與起源 Modbus 誕生于1979年,由施耐德
    的頭像 發表于 07-10 14:10 ?994次閱讀

    請問NICE處理器與傳統ocb外設相比的優勢有什么?

    使用擴展指令調用NICE處理器完成預定操作,給出的優勢通常為代替CPU處理數據,但其實使用片上總線掛一個外設,然后驅動外設完成操作也可以實現相同的功能,所以想問一下處理器相比于外設實現還有沒有其它方面的優勢
    發表于 05-29 08:21

    NICE處理器與傳統ocb外設相比的優勢有什么?

    使用擴展指令調用NICE處理器完成預定操作,給出的優勢通常為代替CPU處理數據,但其實使用片上總線掛一個外設,然后驅動外設完成操作也可以實現相同的功能,所以想問一下處理器相比于外設實現還有沒有其它方面的優勢
    發表于 05-28 08:31

    10分鐘上手寫代碼,LuatOS程輕松掌握!

    10分鐘學會LuatOS程,從此你的程序也能像通勤族利用碎片時間一樣游刃有余。現在就去動手試一試,開啟異步編程新體驗! 寫給第一次聽說程的你?: 別怕!程不是復雜概念,看完這篇,10分鐘就能
    的頭像 發表于 04-10 15:18 ?665次閱讀
    10分鐘上手寫代碼,LuatOS<b class='flag-5'>協</b>程輕松掌握!

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

    權(yield)實現協作,單線程內玩出多任務的感覺。 技術細節: 程切換成本≈打哈欠(0.1μs~1μs) 阻塞操作會直接讓出CPU(比如等待網絡請求時,自動切換到其他程) 必須依附于線程(就像
    發表于 03-26 09:27

    零基礎入門:如何在樹莓派上編寫和運行Python程序?

    在這篇文章中,我將為你簡要介紹Python程序是什么、Python程序可以用來做什么,以及如何在RaspberryPi上編寫和運行一個簡單的Python程序。什么是Python程序?
    的頭像 發表于 03-25 09:27 ?2037次閱讀
    零基礎入門:如何在樹莓派上編寫和運行<b class='flag-5'>Python</b>程序?