Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Una corrutina es un componente de programa que permite que múltiples puntos de entrada a un programa suspendan y reanuden la ejecución en ubicaciones específicas. A diferencia de los subprocesos y procesos, el cambio de rutina está controlado explícitamente por el programador en lugar de ser programado por el sistema operativo. Esto hace que la rutina sea más liviana al realizar cambios de contexto, ya que no es necesario guardar y restaurar todo el entorno de ejecución (como la pila de subprocesos).
En Python, las corrutinas pasan principalmenteasync
yawait
Palabras clave a lograr. Las funciones definidas utilizando estas palabras clave se denominan "funciones de rutina" y no se ejecutan inmediatamente cuando se llaman, sino que devuelven un objeto de rutina. Este objeto de rutina debe programarse para su ejecución en el bucle de eventos.
La programación asincrónica es un modelo de concurrencia que permite que un programa continúe realizando otras tareas mientras espera que se completen ciertas operaciones de larga duración (como operaciones de E/S). En Python, la programación asincrónica se utiliza a menudo con corrutinas, cuya ejecución se programa a través de un bucle de eventos.
async
yawait
async def
para definir la función de rutina.await
esperar a que se complete otra corrutina u operación asincrónica.asyncio
La biblioteca proporciona una implementación del bucle de eventos. Debe asegurarse de que su código asincrónico se ejecute en algún bucle de eventos.asyncio.run(main())
para ejecutar su función de rutina principal, que crea y administra automáticamente el bucle de eventos.python复制代码
import asyncio | |
# 定义一个异步函数,模拟一个耗时的I/O操作 | |
async def fetch_data(url): | |
print(f"Fetching {url}...") | |
# 模拟耗时操作 | |
await asyncio.sleep(1) | |
return f"Data from {url}" | |
async def main(): | |
# 同时启动多个异步任务 | |
task1 = asyncio.create_task(fetch_data('http://example.com/data1')) | |
task2 = asyncio.create_task(fetch_data('http://example.com/data2')) | |
# 等待所有任务完成 | |
result1, result2 = await asyncio.gather(task1, task2) | |
print(result1) | |
print(result2) | |
# 运行主协程 | |
asyncio.run(main()) |
En este ejemplo,fetch_data
Es una función asincrónica que simula solicitudes de red.main
En la función iniciamos dos al mismo tiempo.fetch_data
una tarea asincrónica y su usoawait asyncio.gather()
Espera a que terminen al mismo tiempo.
asyncio
Es parte de la biblioteca estándar de Python y se utiliza para admitir corrutinas y programación asincrónica.También proporciona API rica comoasyncio.Queue
、asyncio.Lock
etc., para manejar problemas de concurrencia y sincronización en código asincrónico.