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. Android-自己定义显示价格的PriceView

    转载请标明出处:http://blog.csdn.net/goldenfish1919/article/details/44418883 先看一下我们要做的效果: 价格分成了3部分.前面是一个¥,中间 ...

  2. Android 匿名共享内存C接口分析

    在Android 匿名共享内存驱动源码分析中详细分析了匿名共享内存在Linux内核空间的实现,虽然内核空间实现了匿名共享内存,但仍然需要在用户空间为用户使用匿名共享内存提供访问接口.Android系统 ...

  3. Webserver管理系列:9、创password重设盘

    网络时代需要记录password太多.一不留神可能会忘记.是否server的password忘记将是一件非常麻烦的事情. Windows Server 2008 它为我们创造password重设盘功能 ...

  4. vmware虚拟机上linux操作系统进行tty1~tty6切换方法和具体步骤

    vmware虚拟机上linux操作系统怎样进行tty1~tty6切换? 现象: Linux的终端机(文字)界面与图形界面间的切换热键为: 进入终端机也就是字符界面(tty1-tty6):[Ctrl] ...

  5. C#复习二(Twenty First Day)

    呵呵,又来到了今天的总结.这次主要复习了一下字符串的一些处理.今天就来总结一下. 理论: —String 字符串,字符串可以看成字符数组,不可变特性(通过for循环,修改string中的元素,失败!) ...

  6. BestCoder Round #46

    1001 YJC tricks time 题目链接:1001 题意:给你时针和分针所成的角度,输出现在的时间,以10秒为单位 思路:每10秒,分针走1度,时针走分针的1/12,我们可以根据时间来分别计 ...

  7. C#代码模拟http发送get和post请求

    private string HttpPost(string Url, string postDataStr) { HttpWebRequest request = (HttpWebRequest)W ...

  8. Android 开发笔记“关闭默认键盘”

    1.打开AndroidManifest.xml文件 2.在对应的activity中增加配置信息 android:windowSoftInputMode="stateHidden"

  9. [转]Swift 简介 - 苹果最新的编程语言

    Swift 真的可以说是最新的编程语言了,2014wwdc刚刚发布,下面来了解一下都有哪些特点. 首先感谢原作者,主要内容是借鉴他的,参考链接 http://zh.lucida.me/blog/an- ...

  10. Qt中QFtp获取带有中文的文件名称出现乱码的解决方法(执行操作前就转换编码)

    今天研究了一下QFtp这个类,发现访问得到的文件名称中一旦出现中文,不管怎么转换编码格式,最终显示出来的始终都是乱码.由于编码错误,我写了两个函数用于互相转换编码. 一个是由正常编码转为QFTP上所谓 ...