Python3.8 異步 asyncio


代碼

import asyncio
import time


async def first_fun(delay):
    print('開始執行 first_fun 函數。')
    await asyncio.sleep(delay)
    print('first_fun 函數執行結束。')
    return delay


async def second_fun(delay):
    print('開始執行 second_fun 函數。')
    await asyncio.sleep(delay)
    print('second_fun 函數執行結束。')
    return delay


async def main():
    print(f"started at {time.strftime('%X')}")

    first = asyncio.create_task(first_fun(5))
    print('=============')
    second = asyncio.create_task(second_fun(4))
    # await first
    # await second
    print('=============')
    print(f"finished at {time.strftime('%X')}")


asyncio.run(main())

  執行結果

started at 13:35:37
=============
=============
finished at 13:35:37
開始執行 first_fun 函數。
開始執行 second_fun 函數。

  

 

代碼2

import asyncio
import time


async def first_fun(delay):
    print('開始執行 first_fun 函數。')
    await asyncio.sleep(delay)
    print('first_fun 函數執行結束。')
    return delay


async def second_fun(delay):
    print('開始執行 second_fun 函數。')
    await asyncio.sleep(delay)
    print('second_fun 函數執行結束。')
    return delay


async def main():
    print(f"started at {time.strftime('%X')}")

    first = asyncio.create_task(first_fun(5))
    print('=============')
    second = asyncio.create_task(second_fun(4))
    await first
    await second
    print('=============')
    print(f"finished at {time.strftime('%X')}")


asyncio.run(main())

  執行結果

started at 13:37:20
=============
開始執行 first_fun 函數。
開始執行 second_fun 函數。
second_fun 函數執行結束。
first_fun 函數執行結束。
=============
finished at 13:37:25

  

結論

asyncio.create_task():就相當於開啟了一個線程。
await :相當用線程的 join,等待協程的運行結束,再繼續運行之后的代碼。

  

更多asyncio教程  https://blog.csdn.net/songjinxaing/article/details/103883210


免責聲明!

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



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