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

640?wx_fmt=png

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

640?wx_fmt=png

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

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

640?wx_fmt=png

01.

Go语言的高并发

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

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

640?wx_fmt=png

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

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

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

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

640?wx_fmt=png

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

02.

Python的高并发

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

640?wx_fmt=png

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

640?wx_fmt=png

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

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


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

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

近期热门:

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

用Python写个弹球游戏2.0

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值