代碼
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
