溫馨提示×

Python協(xié)程如何實現(xiàn)任務(wù)調(diào)度

小樊
81
2024-11-09 12:27:41
欄目: 編程語言

在Python中,協(xié)程(coroutines)是一種輕量級的線程,它們可以在執(zhí)行過程中暫停和恢復(fù)。要實現(xiàn)任務(wù)調(diào)度,我們可以使用asyncio庫,它是Python 3.4及更高版本中的標(biāo)準(zhǔn)庫。asyncio庫提供了事件循環(huán)(event loop)和一些用于創(chuàng)建和管理協(xié)程的工具。

以下是一個簡單的任務(wù)調(diào)度示例:

import asyncio

async def task1():
    print("Task 1 started")
    await asyncio.sleep(2)
    print("Task 1 finished")

async def task2():
    print("Task 2 started")
    await asyncio.sleep(1)
    print("Task 2 finished")

async def main():
    # 創(chuàng)建任務(wù)
    t1 = asyncio.create_task(task1())
    t2 = asyncio.create_task(task2())

    # 等待所有任務(wù)完成
    await t1
    await t2

# 運行事件循環(huán)
asyncio.run(main())

在這個示例中,我們定義了兩個協(xié)程task1task2,它們分別模擬執(zhí)行耗時操作。在main協(xié)程中,我們使用asyncio.create_task()函數(shù)創(chuàng)建任務(wù),并將它們添加到事件循環(huán)中。最后,我們使用await關(guān)鍵字等待所有任務(wù)完成。

當(dāng)你運行這個程序時,你會看到以下輸出:

Task 1 started
Task 2 started
Task 2 finished
Task 1 finished

這個輸出表明,task2task1開始后立即開始執(zhí)行,而task1在等待2秒后完成。這就是一個簡單的任務(wù)調(diào)度示例,你可以根據(jù)需要擴展和修改它。

0