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中文网其他相关文章!