minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Uma corrotina é um componente do programa que permite que vários pontos de entrada de um programa suspendam e retomem a execução em locais específicos. Ao contrário de threads e processos, a troca de corrotinas é explicitamente controlada pelo programador, em vez de programada pelo sistema operacional. Isso torna a corrotina mais leve ao realizar trocas de contexto, pois não há necessidade de salvar e restaurar todo o ambiente de execução (como a pilha de threads).
Em Python, as corrotinas passam principalmenteasync
eawait
Palavras-chave a serem alcançadas. As funções definidas usando essas palavras-chave são chamadas de "funções de corrotina" e não são executadas imediatamente quando chamadas, mas retornam um objeto de corrotina. Este objeto de corrotina precisa ser agendado para execução no loop de eventos.
A programação assíncrona é um modelo de simultaneidade que permite que um programa continue executando outras tarefas enquanto aguarda a conclusão de certas operações de longa duração (como operações de E/S). Em Python, a programação assíncrona é frequentemente usada com corrotinas, cuja execução é agendada através de um loop de eventos.
async
eawait
async def
para definir a função de co-rotina.await
aguardar a conclusão de outra co-rotina ou operação assíncrona.asyncio
A biblioteca fornece uma implementação do loop de eventos. Você precisa ter certeza de que seu código assíncrono é executado em algum loop de eventos.asyncio.run(main())
para executar sua função principal de corrotina, que cria e gerencia automaticamente o loop 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()) |
Neste exemplo,fetch_data
É uma função assíncrona que simula solicitações de rede.main
Na função, iniciamos dois ao mesmo tempofetch_data
uma tarefa assíncrona e usoawait asyncio.gather()
Espere que eles terminem ao mesmo tempo.
asyncio
Faz parte da biblioteca padrão Python e é usado para oferecer suporte a corrotinas e programação assíncrona.Ele também fornece API rica, comoasyncio.Queue
、asyncio.Lock
etc., para lidar com problemas de simultaneidade e sincronização em código assíncrono.