2026-10-21 07:57:10
Python中实现协程的几种方法如下:
以下是各种实现方式的示例代码:
1. 通过greenlet实现协程from greenlet import greenletdef fun1(): print(1) gr2.switch() print(2) gr2.switch()def fun2(): print(3) gr1.switch() print(4)gr1 = greenlet(fun1)gr2 = greenlet(fun2)gr1.switch()2. 通过yield关键字实现协程def fun1(): yield 1 yield from fun2() yield 2def fun2(): yield 3 yield 4f1 = fun1()for item in f1: print(item)3. 通过asyncio模块实现协程import asyncio@asyncio.coroutinedef fun1(): print(1) yield from asyncio.sleep(2) print(2)@asyncio.coroutinedef fun2(): print(3) yield from asyncio.sleep(2) print(4)tasks = [ asyncio.ensure_future(fun1()), asyncio.ensure_future(fun2())]loop = asyncio.get_event_loop()loop.run_until_complete(asyncio.wait(tasks))4. 通过async/await关键字实现协程import asyncioasync def fun1(): print(1) await asyncio.sleep(2) print(2)async def fun2(): print(3) await asyncio.sleep(2) print(4)tasks = [ asyncio.ensure_future(fun1()), asyncio.ensure_future(fun2())]loop = asyncio.get_event_loop()loop.run_until_complete(asyncio.wait(tasks))以上是Python中实现协程的几种方法,每种方法都有其特点和适用场景。在实际开发中,推荐使用async/await关键字来实现协程,因为它是Python官方推荐的方式,并且语法更加简洁明了。