首页 > 其他 > 详细

初识gevent模块

时间:2019-02-15 21:51:19      阅读:177      评论:0      收藏:0      [点我收藏+]

协程的本质是一个线程执行多个任务,检测到I/O操作就切换任务执行,以实现更高效的利用CPU

gevent可以实现任务间的切换

from gevent import monkey
monkey.patch_all()
import gevent
import time
"""
gevent默认只识别自身模块中的I/O操作,所以time.sleep()不会进行切换
但是gevent和 monkey + monkey.patch_all()进行配合就可以检测到导入的
所有模块中的I/O操作
"""
def eat():
    print(eat1)
    time.sleep(1)  # 这里也有I/O操作了但是没有进行切换②
    gevent.sleep(1) # 只有这样的I/O 才识别
    print(eat2)


def sleep():
    print(sleep1)
    time.sleep(1)  # 如果不利用monkey gevent不识别time模块的I/O 不会进行切换
    print(sleep2)


g1 = gevent.spawn(eat)
g2 = gevent.spawn(sleep)
gevent.sleep(2)  # 检测到主任务有了I/O操作就切换了①
gevent.joinall([g1,g2])

 

初识gevent模块

原文:https://www.cnblogs.com/gzying-01/p/10386074.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!