协程
gevent 第三方模块
能处理一些基础网络操作
asynio 内置模块 底层协程模块
aiohttp模块 并发的爬虫
flask轻量级web框架/sanic异步的轻量级的web框架
async
await
是操作系统不可见的
本质是一条线程 多个任务在一条线程上来回切换,来规避IO操作,就达到了一条线程中的io操作降到最低的目的
gevent 利用了 greelet底层模块完成的切换 + 自动规避io功能
asyncio 利用了 yield 底层语法完成的切换 + 自动规避io的功能
import asyncio
async def func():
print("开始")
# await 可能会发生阻塞的方法
# await 关键字必须写在一个asyncio函数里
await asyncio.sleep(1)
print("结束")
loop = asyncio.get_event_loop()
loop.run_until_complete(func())
from gevent import monkey
monkey.patch_all()
import time
import gevent
def func(): # 带有io操作的内容写在函数里,然后提交func给gevent
print("开始函数")
time.sleep(1)
print("结束函数")
g1 = gevent.spawn(func)
g2 = gevent.spawn(func)
g3 = gevent.spawn(func)
g1.join()
g2.join()
g3.join()