python能干什么?
学完Python之后,可以从事以下工作岗位:
1、web开发:Python拥有非常完善的与web服务器进行交互的库,以及大量免费前端网页模板,有非常优秀而且成熟的diangoWEB框架,功能齐全。
2、Linux运维:通过shell脚本去实现自动化运维,但是编程能力较弱,可以使用功能的库很少,而Python作为胶水语言,可以很方便的与其他想结合,对各类工具进行二次开发,形成一套自己的运维管理系统。
3、游戏开发:在游戏开发方面可能Python无法匹敌C++,但是由于Python脚本化的优点,类似于游戏剧本、游戏玩法逻辑等这种非常灵活的设计上,修改起来非常方便。如果用于开发一款游戏程序,Python是非常具有优势的。
4、网络爬虫:在爬虫方面,Python可以说是独领风骚了,Python具有非常丰富的库去网页文档的接口api以及后期网页文档的快速处理。
5、桌面软件:在Windows系统桌面开发领域,C++等语言应用十分广泛,而Python可以实现与C++无缝对接,并且同时支持QT以及GTK。
6、数据分析:python作为一门工程性语言,对于数据处理的类库是相当丰富的,比如有高性能的科学计算类库NumPy和SciPy。
7、人工智能:其实可以写人工智能语言有很多,为何Python是首先呢因为Python是胶水语言,具有独特优势才具有如此好的效果,主要使用python是因为CPython和底层原因的融合使得开发起来更加方便。
更多技术干货,可关注:
随着《魔兽世界》(以下简称wow)在世界范围内流行,脚本渐渐被人们所熟知。由于wow强大的自定义界面系统,Lua这一脚本语言一举成名。\x0d\\x0d\其实早在Lua脚本语言被大众所熟知以前,游戏业内人士就已经开始使用脚本来开发游戏了。我们熟悉的很多国内的网络游戏大都运用了脚本开发,比如网游的长青树“梦幻西游和《大话西游2就大量应用了脚本技术。特别是《大话西游2》,其实现基于Lua脚本游戏开发的时间要远早于《魔兽世界》。在脚本技术上,国内与国外其实是站在同一起跑线上的,并不存在什么差距,这也为国内游戏产业赶超国外游戏产业提供了强有力的技术保证。\x0d\\x0d\在单机游戏时代,脚本这个词几乎很少出现,那么,为什么在网络游戏时代它却成了业界的宠儿呢原因是多方面的。\x0d\\x0d\单机游戏时代,无论游戏主机还是PC机,它们的性能都非常低下,从而需要具有较高执行效率的编译型语言对机器的性能进行“压榨”。随着科技发展和硬件性能的不断提升,脚本逐渐被开发者所接受并利用,但这并不是脚本流行起来的决定性因素,真正的原因还在于游戏市场有这方面的需求。\x0d\\x0d\网络游戏时代的市场竞争激烈、变化莫测,如果延用单机时代一年半载才出一个新版本的开发方式,必然会被游戏行业激烈的市场竞争所淘汰。正是这种游戏市场需求旺盛和开发工具效率底下之间的矛盾,促使脚本语言迅速地发展起来。脚本的兴起使得传统编译型语言(asngC/C )的性能优势在硬件功效大幅攀升的今天已经不复存在。\x0d\\x0d\除了市场和硬件这两个因素之外,还有一点我们不能忽略。那就是用C/C 进行游戏开发的高成本和高项目风险。随着java/.net逐渐流行,学习C/C 编程语言的人越来越少,而网络游戏市场的需求却越来越庞大,在程序人才大量匮乏的情况下,造成了c,C 人才的高成本。即便是有能力雇佣大量C/C 程序员的公司,在开发游戏的过程中,也不能无视C/C 的高级特性和高度灵活性带来的高项目风险。C/C 是易学难精的编程语言,在开发大型项目的时候由于程序员的水平参差不齐,所以极易造成沟通不畅。不仅如此,c,C 滥用的高级特性也容易引入大量bug。正是由于这些原因,游戏公司开始在游戏中使用脚本,希望通过脚本来解决这些高成本、高风险的问题。\x0d\\x0d\二脚本的现状\x0d\\x0d\脚本不仅解决了c/C 无法解决的开发效率难题,还降低了开发的成本和风险。因此脚本技术在游戏业内蓬勃发展起来,并且已经成为游戏业中不可或缺的一环。纵观当前脚本技术现状,形势一片大好,不仅语言百家争鸣,而且书籍种类也越来越多;不仅在游戏业界开花结果,在web等其它应用领域也大放异彩。\x0d\\x0d\首先,我们来看看目前比较流行的脚本:Python、Lua、ruby和Erlang。Python和Lua是网络游戏开发的中坚力量;ruby凭借 rubyonrails的web开发框架的强劲力量,其在游戏业的发展前途亦不可小视;Erlang在高并发性上的原生优势吸引了无数追求高性能网游服务器的开发人员的目光。\x0d\\x0d\其次,我们来看看书籍方面。大家都知道,文字对语言的普及起到了催化剂的作用,甚至可以看作是语言的有机组成部分。Python经过基金会的多年经营而得到NASA、Google重用的原因,就是由于其相关书籍种类比较丰富;Ruby随着RoR的流行,这两年行情看好,书籍也出版得越来越多了;Erlang是典型的少众语言,但随着多核时代的来临和高并发网络应用的需求,Erlang有着光明的发展前景,现在>等书也已经在策划出版了;反观Lua,虽然目前越来越流行,但由于它晦涩的接口设计和缺乏大型应用的支持,使得相关书籍寥寥无几。\x0d\\x0d\最后,我们把焦点重新聚集到游戏开发行业中,其实不难发现,除了前文提到的《魔兽世界》和网易经典“西游系列”使用了脚本外,现在大多数比较流行的程序也都使用了脚本,如腾讯的QQgame))和搜狐的《天龙八部》等。不仅如此,现今的游戏引擎也都提供了脚本接口,无论是商业的unreal引擎还是开源的 OGRE,无一例外。\x0d\\x0d\三脚本的优势\x0d\\x0d\脚本之所以能够在游戏业中找到自己的一席之地,是因为网络游戏市场需要一个快速开发方案来避免C/C 开发带来的项目高成本和高风险。那么,脚本相对于C/C 这类编译型语言到底有什么优势呢\x0d\\x0d\I易于学习,代码可维护性强\x0d\\x0d\脚本的语法通常都非常简单,也没有太多高阶的特性,学习的门槛较C/C 低得多,比如Python可能只需要花一个下午即可学会。这使得游戏开发公司可以招聘完全没有脚本、编程经验的新手,通过低成本的培训,他们便能迅速地走上工作岗位。除易于学习外,脚本代码也有较强的可维护陛(尽管写出没有人看得懂的Lua代码也非难事)。因为脚本没有很多高阶特性(如c 里的模板元编程就是高阶特性),所以脚本程序员就有更多的精力去架构、模式、重用和测试等工作,从而提高了代码的可维护性。相应地,正因为没有那么多让人困惑的高阶特性,也使得脚本代码“简洁”不少。\x0d\\x0d\2.降低开发成本\x0d\\x0d\如上所言,由于脚本易于学习,游戏开发公司可以大量起用新手,这正是降低成本的有效手段。那么如何来确保新手所写代码的质量呢众所周知,新手无论用什么语言写程序肯定会出现bug,但用C/C 和Python做比较,可以看出,一个新手用C/c 编写出的程序所出现的bug肯定会比用Python编写出现的bug要多。由于c程序需要编译,而脚本程序(大部分)都可以直接解释执行,所以在排除 bug方面脚本也占有一定的优势,这也使脚本在降低成本的同时能够更好地保证代码质量。\x0d\\x0d\3.形成人才壁垒\x0d\\x0d\软件开发行业是一个颇为动荡的行业,无数的程序员都在跳槽和谋划跳槽的状态中生活,使用脚本开发形成人才壁垒是游戏业减少人才流动的有效手段。因为现在脚本除了在游戏业中非常流行外,并没有在其它行业形成广泛应用(虽然在web开发方面也有燎原之势,但终究不如在游戏业中的地位高)。这就使得游戏程序员很少会考虑非游戏行业的职位,但其它行业的程序员却可能会因为脚本的易学习性而转投游戏业。脚本除了能有效形成行业间的人才壁垒外,也能有效地形成企业间的人才壁垒。由于现有的脚本种类繁多,不同公司往往有不同的选择,甚至有些公司使用自己开发的脚本语言,所以程序员从公司A跳槽到公司B可能要学习使用另一种脚本,这就提高了跳槽的成本,从而减少了人才的流动。\x0d\\x0d\四脚本的发展趋势\x0d\\x0d\依照目前趋势来看,脚本语言一定会更加的普及,而且会逐渐渗透到其它行业中。随着网络游戏从业人员数量的增长,脚本程序员也一直增加,而且Web2、0热潮引起的网络需求,也促成了一批批新脚本程序员的诞生。网络游戏市场就像一个正在滚动的雪球,推动着脚本的普及。\x0d\\x0d\随着脚本在游戏业中越来越流行,市场对生产效率的需要也会相应提高。脚本虽然在一定程度上缓解了生产效率与生产工具之间的矛盾,但仍然不够完善。由于市场竞争日趋激烈,而网络游戏在很多功能上的实现又都相差无几,如网络、数据库、图形甚至部分逻辑,这必然会引起网络游戏生产的组装化一一大量中间件相互组合形成新的网络游戏。从目前来看,Bigwofld、PhysX和Unreal等都是比较流行的网络游戏中间件。脚本语言则是粘合各个中间件的良好胶水语言,所以随着网络游戏的生产组装化,脚本将有更大的发展空间。\x0d\\x0d\那么,当脚本发展到如日中天的时候,可能取代C/C 这些编译型语言吗笔者认为不会。脚本语言和编译型语言在生产效率和执行效率上各擅胜场,网络游戏既需要能快速应变的脚本,也需要能快速执行以提供更绚丽游戏效果的编译型语言。未来,它们之间一定会保持长久的和谐互补关系,相辅相成。\x0d\\x0d\五结语\x0d\\x0d\综上所述,网络游戏时代是上帝赐予脚本语言发展的绝好时机,脚本语言很快将迎来光芒四射的时代。脚本语言拥有编译型语言无可比拟的生产效率优势,所以它们将互补互助并肩奋战在游戏的最前线。
第一:Python web开发
学完Python可以做web开发,因为现在中国学习Python的比较少,而招聘Python的却非常的多,国内的豆瓣、果壳网等,国外的Google、Dropbox等都在使用Python做web开发。所以Python web是一个非常不错的选择方向。
第二:运维
目前很多运维人还没有学习Python,但是Python给运维带来的价值非常的大,在运维的工作中,有大量重复性工作的地方,并需要做管理系统、监控系统、发布系统等,将工作自动化起来,提高工作效率,这样的场景Python是一门非常合适的语言。如果用Python来做运维将会事半功倍。
第三:数据分析
现在无论是哪个行业的,做数据分析的人似乎都离不开Python,因为Python给他们带来的工作效率是非常的大。在生物信息学、物理、建筑、地理信息系统、图像可视化分析、生命科学等领域都会运用Python进行科学和数字计算。
第四:自动化测试
一切关于自动化的东西,似乎Python都可以满足,Python可以满足大多数自动化工作,提升工作效率。
第五:3D游戏开发
Python有很好的3D渲染库和游戏开发框架,有很多使用Python开发的游戏,如迪斯尼卡通城、黑暗之刃。常用PyGame、Pykyra等和一个PyWeek的比赛。
第六:网络编程
除了网络和互联网的支持,Python还提供了对底层网络的支持,有易于使用的Socket接口和一个异步的网络编程框架Twisted Python。
第七:人工智能
下个时代就是人工智能时代,很多人都在关注,而在人工智能时代最主流的开发语言就是Python,这是一个潜力最大的选择方向,所以学习Python不会错。
可以说Python在IT领域运用相当广泛,学完后可以从事很多方面的工作。所以,赶快来学Python吧!
学Python一定要逼自己狠练这些项目
Python转字符画
200行Python代码实现2048
Python 3实现火车票查询工具
高德API+Python解决租房问题
Python 3色情识别
Python破解验证码
Python实现简单的Web服务器
pygame开发打飞机游戏
Django搭建简易博客
Python基于共现提取《釜山行》人物关系
基于scrap y爬虫的天气数据采集(python)
Flask开发轻博客
Python 3隐写术
Python实现简易Shell
使用Python解数学方程
Python 3实现Markdown解析器
Python气象数据分析--《Python数据分析实战》
Python实现键值数据库
k-近邻算法实现手写数字识别系统
ebay在线拍卖数据分析
Python实现英文新闻摘要自动提取
Python实现简易局域网视频聊天工具
基于Flask及爬虫实现微信娱乐机器人
Python实现Python解释器
Python 3基于Scapy实现DDos
Python实现密码强度检测器
使用Python实现深度神经网络
Python实现从excel读取数据并绘制成精美图像
44、人机对战初体验:Python基于Pygame实现四子棋游戏
Python 3实现可控制肉鸡的反向Shell
Python打造漏洞扫描器
Python应用马尔可夫链算法实现随机文本生成
数独游戏的Python实现与破解
使用Python定制词云
Python开发简单计算器
Python实现FTP弱口令扫描器
Python实现Huffman编码解压缩文件
Python实现Zip文件的暴力破解
Python 3智能裁切
Python实现网站模拟登陆
给Python 3爬虫做一个界面妹子图网实战
Python 3实现转彩色字符
自联想器的Python实现
Python实现简单滤镜
Flask实现简单聊天室
基于PyQt 5实现地图中定位相片拍摄位置
Python实现模板引擎
Python实现遗传算法求解n-queens问题
Python 3实现命令行动态进度条
Python获取挂号信息并邮件通知
Python实现java web项目远端自动化更新部署
使用Python 3编写Git hub自动周报生成器
使用Python生成分形
Python实现Red is异步客户端
Python实现中文错别字高亮系统
导读目前,Python比较火的三大web框架有Django、Flask和Tornado,要论这三个Web框架哪个更好的话,建议一点,Django帮我们事先搭建了好多,上手会快一些,学习的话可以先从Django学起,然后再学习Flask和Tornado,下面我们就来具体了解一下Python三大web框架的详情。
1、Django
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,模板T和视图V。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。
2、Flask
Flask是一个使用Python编写的轻量级Web应用框架。其 WSGI工具箱采用Werkzeug ,模板引擎则使用 Jinja2
。Flask使用BSD授权。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension
增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
Flask 很轻,花很少的成本就能够开发一个简单的网站。非常适合初学者学习。Flask 框架学会以后,可以考虑学习插件的使用。例如使用 WTForm +
Flask-WTForm 来验证表单数据,用 SQLAlchemy + Flask-SQLAlchemy 来对你的数据库进行控制。
3、Tornado
Tornado是一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python
的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。
得利于其 非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个
理想框架。
关于Python三大web框架的简单介绍,就给大家分享到这里了,当然学习是永无止境的,学习一项技能更是受益终身,所以,只要肯努力学,什么时候开始都不晚,希望大家抓紧时间进行学习吧。
Python的中文名称为蟒蛇,是一种计算机程序设计语言;是一种动态的、面向对象的脚本语言。最初是用来编写自动化脚本的,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。
Python的用途有很多,以下为大家介绍一下Python最常见的用途:
1、Web开发
Python拥有非常完善的与Web服务器进行交互的库,以及大量的免费的前端网页模板。更具优势的是,有非常优秀且成熟的Django
Web框架,功能一应俱全。
2、数据科学
数据科学,包含了机器学习、数据处理。
①数据处理:Python作为一门工程性语言,对于数据处理的类库是相当丰富的,比如有高性能的科学计算类库Numpy和Scipy;大名鼎鼎的云计算框架OpenStack就是Python开发的。
②机器学习:可以研究人工智能、机器人、语言识别、图像识别、自然语言处理和专家系统等。
3、网络爬虫
网络爬虫又称为网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序。众所周知,每个网页通常包含其他网页的入口,网络爬虫则通过一个网址依次进入其他网址获取所需内容。
在爬虫领域,Python是独领风骚的。Python有非常丰富的库去访问网页文档的接口API以及后期网页文档的快速处理。
4、Linux系统运维
事实上,在早期都是通过shell脚本去实现自动化运维,但是由于shell脚本本身可编程的能力偏弱,一些需要实现的功能的库也很少,大部分都需要自己从头写起,然而Python作为胶水语言可以很方便的和其他语言集成起来,对各类工具进行二次开发,形成一套自己的运维管理系统。
5、游戏开发
Python在游戏开发方面可能不及lua或者C++,但是由于Python脚本化的特点,类似于游戏剧本、游戏玩法逻辑等这种非常灵活的设计上,我们修改起来十分方便。当然了,如果开发一款小的游戏程序,Python还是很具有优势的,比较出名的就是pygame了,对于我们而言是一个福音。
6、桌面应用开发
在桌面应用开发领域,Python可以实现对C++的无缝对接,并且同时支持QT和GTK。
python脚本。实现python程序只能在指定的服务器上运行需要python脚本,Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990年代初设计,作为一门叫做ABC语言的替代品。
在各种语言平台中,python涌现的web框架恐怕是最多的,是一个百花齐放的世界,各种micro-framework、framework不可胜数;猜想原因应该是在python中构造框架十分简单,使得轮子不断被发明。所
以在Python社区总有关于Python框架孰优孰劣的话题。下面就给大家介绍一下python的几大框架:
Django
Django 应该是最出名的py框架,Google App Engine甚至Erlang都有框架受它影响。
Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。
Django提供的方便,也意味着Django内置的ORM跟框架内的其他模块耦合程度高。
应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利;理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做
全新的装修。
Django的卖点是超高的开发效率,其性能扩展有限;采用Django的项目,在流量达到一定规模后,都需要对其进行重构,才能满足性能的要求。
而Django的缺点主要源自Django坚持自己造所有的轮子,整个系统相对封闭,Django最为人诟病的地方有:
· 系统紧耦合,如果你觉得Django内置的某项功能不是很好,想用喜欢的第三方库来代替是很难的,比如下面将要说的ORM、Template。要在Django里用SQLAlchemy或Mako几乎是不可能,即使打了一
些补丁用上了也会让你觉得非常非常别扭。
· Django自带的ORM远不如SQLAlchemy强大,除了在Django这一亩三分地,SQLAlchemy是Python世界里事实上的ORM标准,其它框架都支持SQLAlchemy了,唯独Django仍然坚持自己的那一套。Django的
开发人员对SQLAlchemy的支持也是有 过讨论和尝试的,不过最终还是放弃了,估计是代价太高且跟Django其它的模块很难合到一块。
· Template功能比较弱,不能插入Python代码,要写复杂一点的逻辑需要另外用Python实现Tag或Filter。Django的模板系统设计十分有意思,也应该其框架内影响最大、争议最大的部分。
Django模板的设计哲学是彻底的将代码、样式分离;aspnet提倡将代码/模板分离,但技术上还是可以混合;而Django则是从根本上杜绝在模板中进行编码、处理数据的可能。
比方说,aspnet模板中可以写:
int i;
for(i==0;i
}
%>
Django是彻底不支持嵌入类似上面的代码,仅能使用其模板内置的函数;这实际上,是为其模板构造了一种“新语言”;由于此“新语言”十分简单,所以也能够将其模板移植到不同平台。
大多数情况下,Django的模板功能是足够的,但对于特殊(有时“特殊”也不是十分特殊)的情况,还是需要在模板中嵌入代码,那么就需要根据其模板系统的规则做模板扩展。有时候,模板中直接写
一行代码能够解决的问题,用模板扩展实现后,会变成十几行代码。
是否容忍在模板中编程,正是Django模板争议最大之处。
Pylons & TurboGears & repozebfg
除了Django另一个大头就是Pylons了,因为TurboGears2x是基于Pylons来做的,而repozebfg也已经并入Pylons project里这个大的项目里,后面不再单独讨论TurboGears和repozebfg了。
Pylons和Django的设计理念完全不同,Pylons本身只有两千行左右的Python代码,不过它还附带有一些几乎就是Pylons御用 的第三方模块。Pylons只提供一个架子和可选方案,你可以根据自己的喜好自
由的选择Template、ORM、form、auth等组件,系统高度可 定制。我们常说Python是一个胶水语言(glue language),那么我们完全可以说Pylons就是一个用胶水语言设计的胶水框架。
选择Pylons多是选择了它的自由,选择了自由的同时也预示着你选择了噩梦:
· 学习噩梦,Pylons依赖于许多第三方库,它们并不是Pylons造,你学Pylons的同时还得学这些库怎么使用,关键有些时候你都不知道你 要学什么。Pylons的学习曲线相对比Django要高的多,而之
前Pylons的官方文档也一直是人批评的对象,好在后来出了The Definitive Guide to Pylons这本书,这一局面有所改观。因为这个原因,Pylons一度被誉为只适合高手使用的Python框架。
· 调试噩梦,因为牵涉到的模块多,一旦有错误发生就比较难定位问题处在哪里。可能是你写的程序的错、也可能是Pylons出错了、再或是SQLAlchemy出错了、搞不好是formencode有bug,反正很凌
乱了。这个只有用的很熟了才能解决这个问题。
· 升级噩梦,安装Pylons大大小小共要安装近20个Python模块,各有各自的版本号,要升级Pylons的版本,哪个模块出了不兼容的问题都有可能,升级基本上很难很难。至今reddit的Pylons还停留在
古董的096上,SQLAlchemy也还是053的版本,应该跟这条有关系。
Pylons和repozebfg的融合可能会催生下一个能挑战Django地位的框架。
Tornado & webpy
Tornado( http://wwwtornadoweborg )是Facebook开源出来的框架,其哲学跟Django近乎两个极端。Tornado即是一个Web server(对此本文不作详述),同时又是一个类webpy的micro-framework。
Tornado走的是少而精的方向,它也有提供模板功能;虽然不鼓励,但作者是可以允许在模板进行少量编码(直接嵌入单行py代码)的。
如果跟aspnet相比,Tornado有点类似仅实现了AsyncHttpHandler;除此之外,全部需要自己去实现。
好吧,其实它有模板,有国际化支持,甚至还有内置的OAuth/OpenID模块,方便做第三方登录,它其实也直接实现了Http服务器。
但它没有ORM(仅有一个mysql的超简单封装),甚至没有Session支持,更不要说Django那样自动化的后台。
假设是一个大型网站,在高性能的要求下,框架的各个部分往往都需要定制,可以复用的模块非常少;一个以Django开发的网站,各部分经过不断的定制,Django框架剩下的,很有可能也就是tornado一
开始所能提供的这部分。
殊途同归。
HTTP服务器
Tornado为了高效实现Comet/后端异步调用HTTP接口,是直接内嵌了HTTP服务器。
前端无需加apache / lighttpd / nginx等也可以供浏览器访问;但它并没有完整实现HTTP 11的协议,所以官方文档是推荐用户在生产环境下在前端使用nginx,后端反向代理到多个Tornado实例。
Tornado本身是单线程的异步网络程序,它默认启动时,会根据CPU数量运行多个实例;充分利用CPU多核的优势。
单线程异步
网站基本都会有数据库操作,而Tornado是单线程的,这意味着如果数据库查询返回过慢,整个服务器响应会被堵塞。
数据库查询,实质上也是远程的网络调用;理想情况下,是将这些操作也封装成为异步的;但Tornado对此并没有提供任何支持。
一个系统,要满足高流量;是必须解决数据库查询速度问题的!
数据库若存在查询性能问题,整个系统无论如何优化,数据库都会是瓶颈,拖慢整个系统!
异步并不能从本质上提到系统的性能;它仅仅是避免多余的网络响应等待,以及切换线程的CPU耗费。
如果数据库查询响应太慢,需要解决的是数据库的性能问题;而不是调用数据库的前端Web应用。
对于实时返回的数据查询,理想情况下需要确保所有数据都在内存中,数据库硬盘IO应该为0;这样的查询才能足够快;而如果数据库查询足够快,那么前端web应用也就无将数据查询封装为异步的必要
。
就算是使用协程,异步程序对于同步程序始终还是会提高复杂性;需要衡量的是处理这些额外复杂性是否值得。
如果后端有查询实在是太慢,无法绕过,Tornaod的建议是将这些查询在后端封装独立封装成为HTTP接口,然后使用Tornado内置的异步HTTP客户端进行调用。
0条评论