溫馨提示×

Python協(xié)程如何實現(xiàn)并發(fā)

小樊
82
2024-10-30 20:30:33
欄目: 編程語言

在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í)行完成

這個輸出表明,Task1Task2幾乎同時開始執(zhí)行,而Task3則在稍后的時間開始執(zhí)行。這表明協(xié)程實現(xiàn)了并發(fā)執(zhí)行。

0