目前有个后端worker用的python 2.7写的,一次起10个gen.coroutine来跑黑盒的代码,这些代码很多是在做HTTP request。

在server端发现这些来自worker的lantency特别长。一番查找发现是http request的receive时间特别长,一般发4ms延迟,但是用这个就是40ms+。

做了一些测试后,定位为gen.coroutine跑代码的坑。

YY的原因:http基于tcp/ip,所以也有若干个回合的通信,一般发request,线程阻塞就挂起,收到就抢占读然后接着下一个包。

Python是单线程,coroutine所以是伪多协程,cpu调度里怀疑是严格的时间片轮转,即使一个coroutine已经被io阻塞了,依然占用cpu,不释放。所以10个协程,在轮询执行过程中,即使有的io已经可读,因为不能用cpu,所以被强行等待,也就是每一轮的通信都被延迟了。所以导致了这个问题。

简单看了下python3里的coroutine,可以做到挂起协程,用await的方法。

但是我们这个有一些特殊性,不能知道用户写的到底是啥,估计这个方法也不一定ok。另外也打算deprecate掉python,所以也不花时间改进了。

python coroutine_Python coroutine的坑相关推荐

  1. python coroutine_python coroutine

    python coroutine 前言 OOAD课程是用python教的,其中涉及到大量的python语法糖,老师也算是手把手教如何写出OO的python,但一个学期没听课只能期末补一补. Corou ...

  2. python coroutine_python coroutine的学习跟总结[转]

    简介 因为最近一段时间需要研究一些openstack相关的东西,在阅读一些相关代码的时候碰到很多python特定的一些特性,比如generator, coroutine以及一些相关的类库,比如even ...

  3. python coroutine_python coroutine的学习和总结

    简介 因为最近一段时间需要研究一些openstack相关的东西,在阅读一些相关代码的时候碰到很多python特定的一些特性,比如generator, coroutine以及一些相关的类库,比如even ...

  4. 决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:

    决策树python建模中的坑 代码 #coding=utf-8 from sklearn.feature_extraction import DictVectorizerimport csvfrom ...

  5. (Python+Tensorflow)编程踩坑集锦

    (Python+Tensorflow)编程踩坑集锦 1 开发环境安装 推荐视频:https://www.icourse163.org/learn/PKU-1002536002?tid=14529374 ...

  6. python matlablib安装踏坑记

    本文主要是记录在linux下安装matlablib中所遇到的坑,给大家一个参考. 我的使用场景是  linux + python2.7 + django 1.10 + matlib 坑1:matlab ...

  7. 学好python需要哪些基础_学Python要避免哪些坑,如何巩固好基础

    学Python要避免哪些坑?零基础怎么入门Python?Python入门简单.语法简洁.功能强大,非常适合零基础入门IT行业的人学习.随着人工智能时代的来临,企业纷纷选择使用Python进行开发,Py ...

  8. python建模 决策_决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:...

    决策树python建模中的坑 代码 #coding=utf-8 from sklearn.feature_extraction import DictVectorizer import csv fro ...

  9. [转载] 当心掉进Python多重继承里的坑

    参考链接: Python多重继承 关于类的知识点里面,有一块是关于多重继承,跟其他主流语言一样,Python也支持多重继承,多重继承虽然有一些好处,但是坑很多,我们今天就来聊一聊Python多重继承里 ...

最新文章

  1. 从小部件的调整入手,AI 让你秒变时尚达人
  2. win10搭建FTP服务器
  3. 用户操作-用户详情查询流程分析
  4. 用计算机怎么打出狂浪字谱,狂浪歌曲简谱
  5. Linux Mount命令浅解
  6. oracle数据库文件默认的安装位置,Oracle 10g数据库默认安装应该注意的问题
  7. 台达A2/B2伺服电机编码器改功率 台达A2/B2伺服电机编码修改
  8. qunee for html5 绘图
  9. Mysql和Oracle实现序列自增
  10. 二进制炸弹实验binarybomb 拆弹
  11. 报告:加密货币和石油市场暴跌是市场接近“闪电崩盘”的标志
  12. python制作壁纸获取器exe,壁纸采集
  13. win2008服务器蓝屏如何修复,win2008r2 老是蓝屏重启。
  14. Linux文件系统--文件类型
  15. 环信IM即时通讯集成-遇到问题及创建默认会话+默认欢迎语
  16. 计算机网络期末考试重点
  17. 如何使用js实现电影海报画廊特效?
  18. 推荐一波书单(多阅读,多思考,就会留住好奇心)
  19. 按英语体育计算机创建透视表,利用Excel“数据透视表”管理体育器材
  20. myeclipse6.5 注册机

热门文章

  1. java 同步 set_Java Collections synchronizedSet()用法及代码示例
  2. ssh放行端口_安全组中已经添加规则放行SSH端口的访问之后使用f1 RTL的方法
  3. .国内外主流前端开发框架对比
  4. 【Computer Organization笔记03】信息编码与码制转换,数据表示:检错与纠错、码距、汉明码等
  5. inno setup 打包脚本学习
  6. Spark history-server 配置 !运维人员的强大工具
  7. 如何在 Swift 中进行错误处理
  8. 计算机专业术语全称及含义整理
  9. scala可变长度参数(一)
  10. js方法实现rgb颜色转换成16进制格式的代码的方法