gevent- monkey 补丁

协程gevent模块的使用_gevent.spawn-优快云博客

阅读上面的博客,就可以理解 gevent.monkey 的作用,就是自动将socket、time等标准库替换成异步的库,是gevent让代码从同步变成异步的一种方式

现在来一段上面博客的代码

import gevent

# 函数1
def func1():
    for i in range(3):
        print("=========== 正在做事情1 ============")
        time.sleep(1)

# 函数2
def func2():
    for i in range(4):
        print("=========== 正在做事情2 ============")
        time.sleep(1)

jobs = [
    gevent.spawn(func1),
    gevent.spawn(func2())
]

gevent.joinall(jobs)

如果没有引入 gevent.monkey,代码是同步执行的,gevent没有检测到 io 操作,于是不会在io等待期间,执行其他协程task

引入gevent.monkey 替换time模块

how to do?

方式1:  monkey.patch_模块名,这里的话是 monkey.patch_time

方式2: monkey.patch_all(模块名=True) ,这里的话是 monkey.patch_all(time=True)

from gevent import monkey

# 对所有的IO和耗时操作打补丁
monkey.patch_all(time=True)

再看一下patch_all 函数源码,time 参数默认是True,因此直接使用monkey.patch_all()也可以让time替换成异步模块

于是有个疑问🤔️,time模块替换成什么了

name 是 “time”

gevent_module 就是那个模块,time 替换成了gevent.time 模块,

哦,原来gevent实现了一个time模块,gevent.time 模块怎么实现的呢,这个问题先留个后续吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值