协程
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
'''
标签:spawn,func3,协程,moon,gevent,模块,time,print
From: https://www.cnblogs.com/moongodnnn/p/16915462.html