温馨提示×

Python协程怎样实现并发处理

小樊
83
2024-11-09 12:20:42
栏目: 编程语言

在Python中,协程是实现并发处理的一种有效方式。协程允许你在一个函数执行过程中挂起(yield),然后在稍后的时间点从同一位置恢复执行(resume)。这使得你可以在单个线程中同时处理多个任务,而无需多线程或多进程的开销。

要实现协程并发处理,你可以使用asyncio库,它是Python 3.4及更高版本中的标准库。以下是一个简单的示例,展示了如何使用asyncio协程实现并发处理:

import asyncio

async def task(name, seconds):
    print(f"{name} 开始执行")
    await asyncio.sleep(seconds)
    print(f"{name} 执行完成")

async def main():
    # 创建任务列表
    tasks = [
        asyncio.create_task(task("A", 1)),
        asyncio.create_task(task("B", 2)),
        asyncio.create_task(task("C", 3)),
    ]

    # 等待所有任务完成
    await asyncio.gather(*tasks)

# 运行事件循环
asyncio.run(main())

在这个示例中,我们定义了一个名为task的协程函数,它接受一个名称和一个秒数作为参数。在函数内部,我们使用await asyncio.sleep(seconds)挂起协程执行指定的秒数。然后,我们定义了一个名为main的协程函数,用于创建和管理任务列表。最后,我们使用asyncio.run(main())启动事件循环并运行main协程。

当你运行这个程序时,你会看到A、B和C三个任务并发执行。尽管它们的执行顺序可能不同,但它们的总执行时间仍然是3秒(B任务等待2秒,C任务等待3秒)。这就是协程实现并发处理的优势。

0