Python开源异步并发框架的未来

    2014年3月30日,由全球最大的中文IT社区CSDN主办的“开源技术大会·” (Open Source Technology Conference ,简称OSTC )在北京丽亭华苑酒店召开。

    本次大会以“启蒙·开源”(Open Mind, Open Source)为主题,邀请到了来自全国各地的30多位开源业界资深人士发表主题演讲,数十个开源社区现场参与,到场的开源软件开发者、贡献者和开源爱好 者总人数超过500人。作为一场“接地气”的开源盛会,“OSTC ”以其开放性、专业性、社交性深受与会者的好评。

    王川:我叫王川,英文名叫Fantix,我的工作主要用Python做创业,业余的时候也会研究不同开源项目,今天主要和Python有关 系,Python3.4两周前发布新的版本,就有今天讲的新的库,相信大家对Python有所了解,或者比较熟悉,简单的来说Python就是解释型的, 更像脚本语言,先从两个比较容易混淆的概念开始说起,不知道大家有没有去办护照的经历,我前一段时间办一个港澳通行证,上午10点去的,下午2点半才办 完,下午饭都没有吃上,真不是办事效率低,人实在是太多了,从窗口一直排到门口,办的这个证这么慢,大家肯定不乐意,领导想了一个辙,多开一个窗口,开 10个窗口,通口量一下就上去了,这个照片非常的写实,和我照片现场一点都不差,虽然这个照片是春运时候拍的。并行的概念就出来了,并行是关于多个处理 器,多个窗口一起办理通行证的业务,要说这只是排一个队,花4个半小时,现场我排了三个队,先排队取号,然后排队照相,照相之后才能办理通行证,每一个队 上都是人在排队,并发的概念也就出来了,大厅里最能站多少人,能站800人,这个并发量就是800。

    并行更多是关注与窗口或者说处理端,必须有一个处理器,它的概念就是要多个处理器,同时在处理不同的事情,和相对的并发不关心处理的一方, 更关注是用户,我们有大量的用户同时在访问一个黑箱的服务器,同时能访问的数量就是并发的数量,并发并不关心服务器里到底有(EK)CPU,还是有 look CPU,如果有一个问题了,如果只有一个CPU并发怎么能实现?有一个常规的做法就是把并发交给操作系统,用操作系统的多进程或者多线程来实现并发,多进 程在这里先不讨论了,因为Python有一些IL多线程其实也并不理想,所以还需要有一个新的方案。

    比较常规的一个办法用操作系统提供的这几个接口,经常被用到,用来做并发,通过这几个接口很容易的操作多个IL的计量,来实现试点驱动并发 编程,什么样的试点驱动呢?现在有一个现象需要同时服务10万客户端,把10万个连接先创建上,通过这样的循环来实现并发,select从10万客户端里 这里选出来最先有数据的客户端,然后做下面的事情,下面的reciv就可以非组塞的方式来实现,就可以非常快速的来完成处理过程,如果select谎报军 情给一个错误的信息,什么也不做,继续循环,这个循环一旦跑起来这个并发就实现了。

    这样的代码简单的写例子还可以,如果写大的外部的应用还是挺费事的,所以要用到框架,Python里关于异步并发框架应用很多,比如 tornado这是facebook的开源的异步框架,把sock给tornado IL LOOK,或者是主循环就可以实现socket,比如有新的连接,新的数据,有时间时候调用这个回调的函数,这个回调函数是异步写的方式,但是写多了也有 一定的难度,其他的库还有对底层的封装,比如一个老牌的酷是twisted,做的分装用是protocol和transbo(音),protocol对应 用层的协议做重装,transbo(音)对底下的传输做封装,在需要有数据的时候调用(trsbook rit)就可以把这个数据发出去,把有一个著名的deferred,实现数据源和函数的分离,defebrred是比较著名的一个部分,用它写的代码和 copak,写小的可以,写大了很难找清楚一个程序前后的顺序,所以抛开deferred,用一个新的技术,在(英文) ,比如callbocks,用就可以直接在同一个函数里拿到这个客户端,下面的程序有4到5个回调函数,写在同一个函数里类似同步的,实是异步的写的方 式,方便程序员写的维护,显示的异步切换,相对于相识追求极致程序员,提出引入的转换,evntlet,gevent,可以把地层的代码打上补贴,如果调 用常规的代码像oropen,如果有一些现有的代码,是同步的,比如jangl如果一部并发的来实现的话是为数不多的选择之一。

    对于显示和隐式的一部切换各有争议,隐式的藏得更深。

    对于Python3的支持对于tornado实现,gevent我来做,最后一批已经发给作者了。

    从统计数据上来看gevent并不是很活跃。

    互操作性,今天大部分的框架都实现了对twisted的支持,时间比较长,大家都会有遗留代码,成为事实上的标准,但是对于不同的框架的第 三方类库的支持,这几个框架都是各成一派,每个人的接口都会有一套自己的实现,像twisted或者mysql,将来会变成什么样?

    Python作者,写了一个库是全新写的一部编程的库,Python的作者和twisted作者聊得太多了,其实这个库挺像twisted,比如collback和import是一样的,添加两秒之后的回调,程序在没两秒钟输出一个(lawork)。

    protocol transport收到消息的时候发回去。

    future概念用来对回调函数进行封装,这个是存在于tes库里的接口。

    asyncio,from可以串接在一起,corouitine对于异步函数做的修饰器,微线程,携程,输出hello world,被修饰的corouitine。

    最下面有一个task和future有一个结果,扔给主循环,达到这样的结果。

    asyncio 更多是一个规范,随着3.4发布的是参考实现,也就是这个蓝色的框,以及原厂的发动机,这个是自己的event loop,写自己的应用程序,asyncio更充分考虑互操作性,可以把原厂的换掉,换上自己的,或者在asyncio,asyncio有两种发动机,通 过用不同的适配器,适配不同的代码,有twisted代码,有gevent代码。

    另外用组装的发动机,用asyncio基本框架,使用已有库的核心,比如说用twisted event lopp,可以直接实现代码是底层是一样的。将来的互操作性,和对已有的适配意义不太大了,因为asyncio每个框架只要实现自己的适配适配到标准的上 面,所有的代码都可以通过这个网络实现一定的互操作性,这个在程序里是很美好的,希望能实现,现在这个实现的过程已经在做了,像twisted和 tomado已经在实现了做了,我自己在做gevnt的适配,就是这样谢谢大家!

Python开源异步并发框架的更多相关文章

  1. Python 开源异步并发框架的未来

    http://segmentfault.com/a/1190000000471602 开源 Python 是开源的,介绍的这几个框架 Twisted.Tornado.Gevent 和 tulip 也都 ...

  2. 【python】15个最受欢迎的Python开源框架

    Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是其全自动化的管理后台: ...

  3. 14个最受欢迎的Python开源框架

    本文从GitHub中整理出的14个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框架 Dja ...

  4. 最受欢迎的15个Python开源框架

    GitHub中15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. 1.Django: Python Web应用开发框架 Django 应 ...

  5. 15个最受欢迎的Python开源框架

    以下是伯乐在线从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框 ...

  6. 从GitHub中整理出来的15个最受欢迎的Python开源框架,你喜欢哪个

    从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框架 Djang ...

  7. 【转】15个最受欢迎的Python开源框架

    以下是伯乐在线从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框 ...

  8. 转载:15个最受欢迎的Python开源框架

    出自:http://python.jobbole.com/72306/?replytocom=57112 15个最受欢迎的Python开源框架 Django: Python Web应用开发框架 Dja ...

  9. 15个最受欢迎的Python开源框架(转载)

    一.Django: Python Web应用开发框架 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理 ...

随机推荐

  1. ubuntu 14.04设备flash媒体播放器

    今天是2014年4一个月19日本,就在两天前公布 ubuntu 14.04版本号, 以今天的优势是星期六,西安小雨,所以折腾linux. 我是个有点linux基础的小白.说是有些基础是由于以前在上大学 ...

  2. Android Animation学习(二) ApiDemos解析:基本Animatiors使用

    Animator类提供了创建动画的基本结构,但是一般使用的是它的子类: ValueAnimator.ObjectAnimator.AnimatorSet ApiDemos中Animation部分是单独 ...

  3. Hadoop MapReduce链式实践--ChainReducer

    版本号:CDH5.0.0,HDFS:2.3.0,Mapreduce:2.3.0,Yarn:2.3.0. 场景描写叙述:求一组数据中依照不同类别的最大值,比方,例如以下的数据: data1: A,10 ...

  4. offsetParent 到底是哪一个?

    前言 温故而知新.遇到offsetParent这个知识点,发现书上讲的不够详细.于是看了看豪情的博客,发现讲得很具体,收藏一下. 正文 不同情况 没有已定位的父节点,且自身position:relat ...

  5. JS闭包经典例题

    上一篇文章谈论了闭包的概念和一些应用,并给出一个例题,这篇文章就此道例题进行讨论. function fun(n,o) { console.log(o); return { fun:function( ...

  6. HTML静态网页(框架)

    1.frameset frameset最外层,使用时需要去除body改用frameset. <frameset  rows="100,*" frameborder=" ...

  7. 2045不容易系列之(3)—— LELE的RPG难题

    Problem Description人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即”可乐”),经过多方打探,某资深Cole终于知道了原因,原 ...

  8. win7 64位 Xsheel

    Xsheel5安装后,找不到.dll文件,系统支持不好,不用 Xshell4有时提示 1152:Error 就使用 链接:http://pan.baidu.com/s/1c1s42Y0 密码:098x ...

  9. selenium 学习笔记 ---新手学习记录(10) 问题总结(java)--poi--excel 操作

    1.当我使用poi想要操作xlsx时,报错,解决方法下载xmlbeans-2.6.0.jar架包,引入即可.点我下载 https://yunpan.cn/cSdVqp6e4v6Jk  访问密码 2c5 ...

  10. Word2007中如何插入参考文献

    很多国内的期刊杂志都只能使用word模板,导致插入参考文献成了件麻烦事,这时特别怀念Latex的便捷.于是找到一篇介绍word2007里插入参考文献的好方法,就是利用尾注的方法使文章的参考文献标号可以 ...