社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

天下武功为快不破,戏说Python与Go高并发争锋!

菜鸟学Python • 5 年前 • 772 次点击  


在这个以斗气大陆横行的世界,每一个大的势力宗门都有自己的杀手锏的功法,比如老牌的古族有C++这样的巨无霸语言,药族有C语言,几乎斗气大陆所有的操作系统都是用C语言做的,毕竟斗气都要靠吃丹药维持。而实力非常猛的魂族有Java这样的毁天灭地的语言,神秘莫测,势力范围也非常大,拥有广大的用户!



而斗气大陆最近十年风头最劲的当属萧族的Python语言。2007,2010,2018,三年都是排名第一。它可以做很多事情,身兼八大家族的各种功法于一身,比如爬虫,数据分析,自动化测试,运维,数据挖掘和机器学习等等!而且在机器学习领域称王称霸,独领风骚!


然后斗气大陆无奇不有,各种新的功法层出不穷!天下武功为快不破,云计算里面的排名第一go最近风起云涌,尤其是搭上了区块链这样的庞大家族,财大气粗未来前景非常看好!据说Go语言的功法里面最强的就是高并发剑招,那么我们今天来看看Python和Go的高并发之战到底差距有多大!



01.

Go语言的高并发


Go作为一门新兴的编程语言,最大特点就在于它是原生支持并发的。和传统基于 OS 线程和进程实现不同,Go语言的并发是基于用户态的并发,这种并发方式就变得非常轻量,能够轻松运行几万甚至是几十万的并发逻辑。


听起来非常牛逼啊,到时Go的高并发有多快呢,我们不如写一个最简单的Hello world来看看。


1).首先,我们写一个Hello world的函数,这个函数就干一件事,死命的打印Hello world from xx.


2).接着,我们开1000个线程(其实不是线程可以认为是协程,物理上对应一个线程)。大家可以看到开1000个这样的线程是相当相当牛逼的,一般我们在Python里面开50个线程就非常了不起了,这里Go语言轻松开1000个并发!


因为Go生下来就是斗宗的强者,天生自带并发特性。只需要用Go关键字就可以申明高并发了,非常简洁!比起其他的语言需要用外挂丹药修炼提升自己的斗气,要简洁不知道多少倍了!


3).最后,我们用time.sleep()让主线程只停留1毫秒,1毫米的时间让1000个人去死命打印hello world,我们看看结果哈:



看完上面的也许大家知道Go很能打,那短短的1毫秒Go到底能打印出多少个Hello world呢,比如我们设定一个5000吧,看看Go1毫秒能否打印出5000个Hello world!

我们还是打印HelloWorld, 这次直接打印5000个,然后限时在1毫秒内完成,看看Go能否5000个都打完?


Go 还是很强的,不仅异步的代码书写非常简单,而且效率之高让人瞠目结舌,毕竟人家是编辑器级别的并发,也就从娘胎里出来就是高并发的!



02.

Python的高并发


Python里面的高并发非Asyncio莫属,这个号称是Python3里面最有野心的库,从Python3.6开始逐渐稳定推出,到了Python3.7又进行了修正,到底跟Go会又多大的差距呢,我们来看一下:


Python的高并发协程需要靠后天的修行,也就是用库Asyncio来完成,原生的并不支持高并发!那么我们也高并发5000个任务,每个任务都是打印HelloWorld,看看需要多久的时间?

这个结果也是让我大跌眼镜,也许可能是cpu密集性这样的操作对Python来说本来就用Asyncio没有啥优势,但是无论如何这个效率确实跟Go比起来,逊色很多啊!


难怪现在很多大公司的后端开发,比如知乎的百万级的高并发的访问,慢慢从Python转为Go语言,虽然重构的代价非常大,但是长远看在性能这一条上,Go语言的优势非常明显!




当然上面的对比并不一定非常科学和严谨,毕竟Python的强项并不是高并发而是其几乎变态的全能语言也就是说你学会Python可以干很多很多事情,而且可以跨领域的做一些事情,而Go目前只是在云计算领域占有霸主地位!


欢迎留言吱一声,说说你的看法!


近期热门:

近300本Python书籍到底哪家强,用Python告诉你

用Python写个弹球游戏2.0

我用Python写了个火影忍者版的连连看

零基础学Python都想问的6个问题,老司机给你两千字解答


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39607
 
772 次点击