协程- gevent模块

协程

1.什么是协助:在单线程下实现并发效果

2.协程的原理:
  通过代码监听IO操作一旦遇到 IO 操作就立刻切换下一个程序 
  让cpu一直在工作  这样就可以一直占用CPU的效率 提高程序执行效率
  切换+保存状态
   
from gevent import spawn
# 需要导入这个库 才可以 遇到 IO 操作就自动切换和保存
from gevent import monkey;monkey.patch_all()
# 为了更加全部的识别更多IO操作 最好加上导入这个猴子补丁

def fucn1():
    print('我是func1')
    time.sleep(2)
    print('111111')

def fucn2():
    print('我是func2')
    time.sleep(3)
    print('22222')

def func3(name):
    print('我是func3',name)
    time.sleep(3)
    print('33333',name)

start = time.time()

gevent.joinall([spawn(fucn1),spawn(fucn2),spawn(func3,'moon')])
# 这样就可以同时执行这三个任务 并且遇到io操作就自动执行下一行
# 这样只需要3秒就可以执行完所有的程序

'''
我是func1
我是func2
我是func3 moon
111111
22222
33333 moon
3.0035367012023926
'''
print(time.time()-start)



g1 = spawn(fucn1)
g2 = spawn(fucn2)
g3 = spawn(func3,'moon')
g3.join()
# 把耗时最长的任务做一个等待结束 这样之前的任务就会根据IO操作
# 反复切换操作 也可以实现 按个io操作执行完就先接着执行哪一个
print(time.time()-start)
'''
我是func1
我是func2
我是func3 moon
111111
22222
33333 moon
3.0035367012023926
'''
posted @   Python-moon  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示