python async異步編程(一)


可參見python官方文檔:https://docs.python.org/zh-cn/3.7/library/asyncio-eventloop.html

一、事件循環

事件循環:是python異步編程中重要的一個環節;可以理解未就是一個死循環,這個死循環會去檢測並執行某些代碼。

例如:

# 偽代碼
列表 = [任務1,任務二,任務三]

while True:
    可執行的任務列表,已完成的任務列表 = 去任務列表檢測所有任務,將“可執行”和“已完成”的任務返回
    for 就緒任務  in  就緒任務列表:
        執行就緒恩物

    for 已完成的任務  in  已完成的任務列表:
        在任務列表中移除已完成的任務

    如果任務列表中所有任務完成,則終止循環

python代碼如下:

import asyncio

# 生成一個事件循環
loop = asyncio.get_event_loop()
# 將任務放到任務列表去執行
loop.run_until_complate(tasks)

二、攜程函數與攜程對象

攜程函數:python3.5之后使用  async  def  函數名,定義的函數就叫攜程函數

攜程對象:執行攜程函數   函數名(),得到的就是攜程對象

async  def  func():
    print("哈哈哈哈哈")

# 調用攜程函數不會執行該函數內部代碼
result = func()

如何讓攜程函數得到執行:

如果要運行攜程對象,必須將攜程對象交給事件循環來處理

import asyncio
async def func(): print("哈哈哈") result = func()
loop = asyncio.get_event_loop()
loop.run_until_complate(result)

# python3.7之后有更簡單的方法
asyncio.run(result)

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM