协程- 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 @ 2022-11-22 16:13  Python-moon  阅读(32)  评论(0)    收藏  举报