新知榜官方账号
2023-12-09 16:09:24
编程语言的选择不可否认的是,人工智能慢慢成为我们日常生活中不可或缺的一部分,同时,也有越来越多的技术从业者(码农)想要选择或者转行到这个行业,那么AI行业应该选择哪一门编程语言呢?如何选择一门语言,主要看这门语言在行业内的生态何如。在AI行业,Python有着它不可取代的重要地位。目前世界上最流行的深度学习框架,如谷歌的TensorFlow、FaceBook的PyTorch以及开源社区的Keras神经网络库等,都是用Python实现的,Microsoft的CNTK也完全支持Python。并且Python语言本身也擅长进行科学计算和数据分析,支持各种数学运算。目前在AI行业,任何语言都不能够撼动Python的地位。是否掌握了Python就能够畅游AI的海洋了呢?当然不够!深度学习往往需要规模密度较大的计算,通常还需要一些硬件的支持,比如GPU。由于语言特性的限制,Python(解释型语言)对比C++(编译型语言)在执行性能上有着数量级的劣势,与此同时,对于硬件接口(比如GPU)的支持,Python也显得力不从心,但这些却是C++的特长。在要求高效执行的程序架构中,我们都会看到C++一展身手,比如智能机器人的路径规划、机械手臂运动控制以及目前最流行的计算机视觉库OpenCV的底层实现,都会使用到C++语言。在机器学习、深度学习算法方面,C++才是核心,而Python通常是核心之上的一层封装。在AI行业,Python和C++各自有各自的应用场景,相辅相成,缺一不可。即使抛开行业不论,Python与C++本身也是当前最火的编程语言,以下是TIOBE公布的2022年12月编程语言排行榜,Python、C/C++稳居前三甲。
混合编程
在AI领域的实际的开发工作中,综合考虑代码开发效率以及执行效率,程序架构通常是由C++完成核心算法模块,而程序逻辑部分则由Python编写。那么,Python模块与C++模块如何通信呢?这就不得不提到一个概念“混合编程”,所谓混合编程,实际上就是不同编程语言之前的相互调用,在这里,我们主要讨论Python调用C++。通常C++编写的模块会被封装成库文件供其他模块调用,对于Linux系统是.so或者.a,对于Windows系统则是.dll或者.lib。而Python(专指CPython)调用C/C++库的主要手段有:ctypes,SWIG,Cython,pybind11。pybind11是一个轻量级的只包含一组头文件的C++库,可实现C++11和Python之间的无缝操作,主要还是聚焦于Python调用C++。相对于其他混合编程方式pybind11有着轻量级、使用简单、支持面广等众多优势,本文也将着重介绍pybind11的基本使用。
pybind11的基本使用
pybind11源码开放在github,license为BSD,截止2022年底已发布17个release版本,当前最新版本为Version2.10.2,github上star数量超过12k。pybind11是一个轻量级的只包含一组头文件的C++库,可实现C++11和Python之间的无缝操作,主要还是聚焦于Python调用C++。相对于其他混合编程方式pybind11有着轻量级、使用简单、支持面广等众多优势,本文也将着重介绍pybind11的基本使用。
下面通过一个简单的使用demo,用来介绍pybind11的基本使用,demo的作用是验证numpy图像矩阵在Python与C++之间的相互传输。环境如下:操作系统:Ubuntu-20.04。Cmake版本:3.16.3。Python版本:3.8。
需要注意的地方
GIL问题
在程序设计中,将计算密集型的模块放到C++程序中,利用C++多线程的优势能极大地提高程序的执行性能。在pybind11中,想要达到以上效果,需要程序员做一些额外的工作。在程序中当执行流从Python侧进入C++侧时,GIL总是持有的,如果C++侧代码长时间运行,且不释放GIL,则Python侧会长时间阻塞。因此,通过Python调用C++时,若C++侧代码执行时间较长,且存在Python侧多线程需求,建议在C++代码入口处释放GIL。
相关工具
相关文章
相关快讯
推荐
用Deepseek写AI绘图提示词,像呼吸一样简单!
2025-02-19 16:12
你以为AI绘画是黑科技?其实早成了“路边摊生意”!
2025-02-19 10:15
Flux爆火,全网最全面最详细的Flux使用教程!
2025-02-18 14:19
用AI如何创作音乐,实战教学来啦!
2025-02-17 17:23
MidJourney让你秒变绘画大神,从零开始画哪吒!
2025-02-17 14:56
AI应用新境界:让人工智能成为你的得力助手
2025-02-14 15:45
AI短片革命:当创作遇上智能,人人都能成为导演
2025-02-14 14:53
AI狂潮下的人类职场:是失业危机还是进化契机?
2025-02-13 16:53
开启影视创作新纪元,效率提升 10 倍的神器来了!
2025-02-13 15:11
深度解析DeepSeek:当AI技术照进创作产业的未来
2025-02-12 17:16