Async/await fournit une syntaxe pratique pour la programmation asynchrone en Python. Cependant, il existe des situations dans lesquelles nous souhaitons lancer une opération asynchrone sans attendre son achèvement. Ceci est souvent appelé "tirer et oublier".
Python fournit asyncio.Task, qui nous permet de créer une tâche qui s'exécutera en arrière-plan. En utilisant asyncio.Task, nous pouvons réaliser « tirer et oublier » en ajoutant le code suivant à notre script :
import asyncio async def async_foo(): # Do some asynchronous stuff here # Create a task for async_foo() asyncio.ensure_future(async_foo())
Cela crée une tâche pour async_foo() qui s'exécutera de manière asynchrone sans bloquer le thread principal.
Si notre script se termine avant que toutes les tâches ne soient terminées, nous pouvons utiliser le code suivant pour attendre toutes les tâches en attente :
pending_tasks = asyncio.Task.all_tasks() loop.run_until_complete(asyncio.gather(*pending_tasks))
Cela garantit que toutes les tâches ont terminé avant la fin du script, évitant ainsi tout avertissement ou erreur.
Dans certains cas, nous ne souhaitons peut-être pas attendre que les tâches soient terminées. Nous pouvons les annuler en utilisant le code suivant :
for task in pending_tasks: task.cancel() with suppress(asyncio.CancelledError): loop.run_until_complete(task)
Cela annule les tâches et supprime les erreurs qui pourraient survenir à la suite de l'annulation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!