le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Una coroutine è un componente del programma che consente a più punti di ingresso di un programma di sospendere e riprendere l'esecuzione in posizioni specifiche. A differenza dei thread e dei processi, il cambio di coroutine è esplicitamente controllato dal programmatore anziché pianificato dal sistema operativo. Ciò rende la coroutine più leggera quando si eseguono cambi di contesto, poiché non è necessario salvare e ripristinare l'intero ambiente di esecuzione (come lo stack di thread).
In Python, le coroutine passano principalmenteasync
Eawait
Parole chiave da raggiungere. Le funzioni definite utilizzando queste parole chiave sono chiamate "funzioni coroutine" e non vengono eseguite immediatamente quando vengono chiamate, ma restituiscono invece un oggetto coroutine. Questo oggetto coroutine deve essere pianificato per l'esecuzione nel ciclo degli eventi.
La programmazione asincrona è un modello di concorrenza che consente a un programma di continuare a eseguire altre attività mentre attende il completamento di determinate operazioni a lunga esecuzione (come le operazioni di I/O). In Python, la programmazione asincrona viene spesso utilizzata con coroutine, la cui esecuzione è pianificata tramite un ciclo di eventi.
async
Eawait
async def
per definire la funzione coroutine.await
per attendere il completamento di un'altra coroutine o operazione asincrona.asyncio
La libreria fornisce un'implementazione del ciclo di eventi. Devi assicurarti che il tuo codice asincrono venga eseguito in qualche loop di eventi.asyncio.run(main())
per eseguire la funzione coroutine principale, che crea e gestisce automaticamente il loop degli eventi.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()) |
In questo esempio,fetch_data
È una funzione asincrona che simula le richieste di rete.main
Nella funzione, ne abbiamo avviati due contemporaneamentefetch_data
un'attività e un utilizzo asincroniawait asyncio.gather()
Aspetta che finiscano nello stesso momento.
asyncio
Fa parte della libreria standard Python e viene utilizzato per supportare le coroutine e la programmazione asincrona.Fornisce inoltre API ricche comeasyncio.Queue
、asyncio.Lock
ecc., per gestire problemi di concorrenza e sincronizzazione nel codice asincrono.