协程的切换不同于线程切换,是由程序自身控制的,没有切换的开销。协程不需要多线程的锁机制,因为都是在同一个线程中运行,所以没有同时访问数据的问题,执行效率比多线程高很多。
因为协程是单线程执行,那怎么利用多核CPU呢?最简单的方法是多进程+协程,既充分利用多核,又充分发挥协程的高效率,可获得极高的性能。
举个例子:
import asyncio
async def display(num):
at = 5
t = 1
while True:
print('Loop: ' + str(num) + ' at: ' + str(at) + ' t:' + str(t))
if t >= at:
break
t += 1
await asyncio.sleep(2)
loop = asyncio.get_event_loop(<