Async/await 為Python 中的非同步程式設計提供了便捷的文法.但是,在某些情況下,我們希望啟動非同步操作而不等待其完成。這通常被稱為“一勞永逸”。
Python 提供了 asyncio.Task,它允許我們創建一個在後台執行的任務。使用asyncio.Task,我們可以透過在腳本中加入以下程式碼來實現「即發即忘」:
import asyncio async def async_foo(): # Do some asynchronous stuff here # Create a task for async_foo() asyncio.ensure_future(async_foo())
這會為async_foo() 建立一個任務,該任務將非同步執行而不會阻塞主線程。
如果我們的腳本在所有任務完成之前完成,我們可以使用以下程式碼來等待所有任務待處理任務:
pending_tasks = asyncio.Task.all_tasks() loop.run_until_complete(asyncio.gather(*pending_tasks))
這可確保所有任務在腳本退出之前已完成,從而防止任何警告或錯誤。
在某些情況下,我們可能會不想等待任務完成。我們可以使用以下程式碼取消它們:
for task in pending_tasks: task.cancel() with suppress(asyncio.CancelledError): loop.run_until_complete(task)
這會取消任務並抑制因取消而可能引發的任何錯誤。
以上是如何在 Python 中使用 Async/Await 實現「一勞永逸」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!