协程

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
'''

最新文章

  1. Android测试网络是否连接
  2. ubuntu系统安装初始化脚本
  3. Command and Query Responsibility Segregation (CQRS) Pattern 命令和查询职责分离(CQRS)模式
  4. 试用 Nexus OSS 3.0 的docker仓库 (二)
  5. 三星在GPL下发布其exFAT文件系统实现源码
  6. C/C++文件操作1
  7. Ubuntu的一些常用快捷键
  8. 【转】ArrayList遍历的同时删除----不错
  9. 使用dfs实现1至n全阵列
  10. Rookey.Frame v1.0 视频教程发布了
  11. C++ 函数模板“偏特化”
  12. shell脚本命令(记录)
  13. MT【225】两平行直线夹曲线
  14. Oracle——存储过程的使用
  15. ASP.NET MVC + EF 更新的几种方式(超赞)
  16. matplotlib画的图保存为emf格式
  17. 部分真验货客户未取进FP IN_SALES_ORDER表有数据,前台规划页面没显示
  18. laravel 嵌套事务
  19. combined with the Referer header, to potentially build an exhaustive data set of user profiles and browsing habits Client Identification
  20. Java的定时调度

热门文章

  1. Elastic Stack 8.0 再次创建enrollment token
  2. Logstash: 如何创建可维护和可重用的Logstash管道
  3. 8. 使用Fluentd+MongoDB采集Apache日志
  4. 跟我学Python图像处理丨傅里叶变换之高通滤波和低通滤波
  5. VS中git概念解析与深度使用
  6. .Net CLR异常简析
  7. 使用Pytorch进行多卡训练
  8. 怎么在线预览.doc,.docx,.ofd,.pdf,.wps,.cad文件以及Office文档的在线解析方式。
  9. 前端框架Vue------>第一天学习(2) v-if
  10. 齐博x1万能数据统计接口