在Python中,協(xié)程(coroutines)是一種特殊的函數(shù),可以在執(zhí)行過程中暫停和恢復(fù)。要實現(xiàn)并發(fā),可以使用asyncio
庫,它是Python 3.4及更高版本中的標(biāo)準(zhǔn)庫。以下是使用asyncio
實現(xiàn)協(xié)程并發(fā)的示例:
import asyncio
async def coroutine_example(task_name, delay):
print(f"{task_name} 開始執(zhí)行")
await asyncio.sleep(delay)
print(f"{task_name} 執(zhí)行完成")
async def main():
# 創(chuàng)建協(xié)程任務(wù)列表
tasks = [
coroutine_example("Task1", 2),
coroutine_example("Task2", 1),
coroutine_example("Task3", 3),
]
# 并行運(yùn)行協(xié)程任務(wù)
await asyncio.gather(*tasks)
# 運(yùn)行事件循環(huán)
asyncio.run(main())
在這個示例中,我們定義了一個名為coroutine_example
的協(xié)程函數(shù),它接受一個任務(wù)名稱和一個延遲時間作為參數(shù)。在函數(shù)內(nèi)部,我們使用await asyncio.sleep(delay)
來模擬執(zhí)行耗時操作。
在main
函數(shù)中,我們創(chuàng)建了一個包含三個協(xié)程任務(wù)的列表,然后使用asyncio.gather(*tasks)
來并行運(yùn)行這些任務(wù)。最后,我們使用asyncio.run(main())
來啟動事件循環(huán)并運(yùn)行main
函數(shù)。
當(dāng)你運(yùn)行這個程序時,你會看到以下輸出:
Task1 開始執(zhí)行
Task2 開始執(zhí)行
Task3 開始執(zhí)行
Task2 執(zhí)行完成
Task1 執(zhí)行完成
Task3 執(zhí)行完成
這個輸出表明,Task1
和Task2
幾乎同時開始執(zhí)行,而Task3
則在稍后的時間開始執(zhí)行。這表明協(xié)程實現(xiàn)了并發(fā)執(zhí)行。