协程

协程
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()

 



posted @ 2023-02-23 20:31  Wchime  阅读(35)  评论(0)    收藏  举报