过去几年,Python成为人工智能和数据科学领域最受欢迎的编程语言。但是随着5G时代的来临,生产环境对AI应用的性能要求越来越高,Python有点「力不从心」。天生支持并发的Golang应运而生,专家称,Go语言将统治人工智能的下一个十年。
30年前,Python 首次出现。
但是Python花了20年的时间才得到公众的认可。
根据2019年Stack Overflow的调查,Python成为开发人员第二喜爱的语言。
过去的5年里,Python的成长无疑是巨大的,已经成为机器学习和数据科学开发人员的首选语言。
短时间来看,Python 的主导地位大概率不会变。但是与一些新兴的语言相比,它有一些严重的缺点,将成为生产环境部署的障碍。
Python 受欢迎的主要原因是它很容易学习。
与其他语言相比,它的语法很简单,任何人都可以在几个小时或几天内学会 Python 的基础知识。
即使在学习了c++ 或 Java 等其他语言之后,开发人员还是更愿意使用 Python。因为无论你想干啥,总有一个Python 库能满足你的需求,这些库让开发数据科学和AI类的应用变的简单高效。
但Python在大规模生产环境下的性能问题,直接影响了AI应用的开发效率。现在很多人工智能初创企业,正处于底层架构的构建阶段,检查 Python 的问题很有必要。
Python是一个解释性语言,这导致它执行起来比较慢,与其他编译语言如c++ 和 Go 相比,Python 的执行速度就像乌龟一样,所以很多AI模型虽然是用Python开发的原型,部署时还得转成其他语言。
Python 是一种动态类型语言。变量的数据类型在运行时自动判断,也使得执行速度变慢。
为了克服 Python 的速度,很多Python库选择更快的语言来重写,例如 TensorFlow、 Numpy 和 Pandas 部分是用 c 或c++ 编写的,它们有助于显著提高执行速度。
这就有点像拄着拐走路,一直需要外界的帮助。
随着5G时代的来临,多任务并行处理和实时性的需求猛增,Python是可以构建小而美的应用,但是大规模、高吞吐的场景下,表现不尽如人意。虽然有很多方法,来提高Python的并行计算的能力,但都是曲线实现的,并没有实现真正意义的并行。
因为Python中存在一个GIL锁,每次只允许程序执行一个线程。
GIL的全称是Global Interpreter Lock(全局解释器锁),Python之父为了数据安全而设计的,那个时候计算机的主频还没有达到1G,程序全部都是运行在单核计算机上面。
某个线程想要执行,必须先拿到GIL,可以把GIL看作CPU的「通行证」,拿不到通行证就不允许进入CPU执行,Python 的多线程实际上并没有利用到多核计算的优势,它不管你有几个核,100个核也只能跑一个线程。