Python并非为AI而生,Golang将统治人工智能的下一个十年?
文章插图
【新智元导读】过去几年 , 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个核也只能跑一个线程 。
所以 , 原生的Python在性能上是有诸多限制的 。 人工智能和数据科学领域 , 对性能需求又很高 , 那有没有一种语言既有Python简单易用的优点 , 又能满足生产需求呢?
这时 , Golang应运而生 。
Golang(简称Go) 是一种静态和编译型语言 , 这意味着它的执行速度将比 Python 快好几倍 。 与 Python 不同 , Go 不需要其他语言的帮助来提高速度 。
下面是Go和 Python 之间的一个小型基准游戏对决 。 Go执行几乎和 c++、 Java 一样快 , 而且Go 编译代码比c++ 和 Java 要快得多 , 有些游戏中Go所需时间只有Python的百分之一 。
- 第2天 | 12天搞定Python,运行环境(详细步骤)
- Python高级技巧:用一行代码减少一半内存占用
- 手把手教你用python编程写一款自己的音乐下载器
- Python爬虫入门第一课:如何解析网页
- 刷爆全网的动态条形图,只需5行Python代码就能实现
- 让你的输出变得更帅,Python炫酷的颜色输出与进度条打印
- 斐波那契数列:python实现和可视化
- Python 3.9 正式发布!一图秒懂新特性
- 技术 | 室内LED屏亮度并非越高越好?“低亮高灰”很关键
- Python解决同步验证码模拟登录问题