Python与C++混合编程

概述

Py是解释型语言,编译时不直接翻译成汇编语言而是字节码,在py的虚拟机中运行,在进行数据运算的场下,存在性能瓶颈。C++性能卓越,但学习门槛高且开发效率比py低,可用于密集型计算并用Python进行调用。

也可以用golang,后面可补充

与C++混合方式

将影响性能的核心代码用c++/go来写,而逻辑开发由py完成

  • 方法一:使用ctypes库加载C++编写的动态链接库,并加载到py中使用
    ctypes 是 Python 的外部函数库。它提供了与 C 兼容的数据类型,并允许调用 DLL 或共享库中的函数。可使用该模块以纯 Python 形式对这些库进行封装(需要先将C++编写的代码转为动态链接库..dll)
    指南:https://docs.python.org/zh-cn/3/library/ctypes.html
  • 方法二:使用pybind将C++编译为Python库。

官网:https://pypi.org/project/pybind11

  • 方法三:使用Python将Py直接转为C++代码。

官网:https://pypi.org/project/pythran

本文介绍pythran的使用方法

pythran

  • 用py编写算法代码

  • 用pythan将py转为c++

  • 用C++编辑一个简单的main方法函数,直接调用py转为c++后的函数

安装

复制代码
pip install pythran
pythran --help

pythran可以用py的import代码导入,也可以直接在命令行中执行

转换

复制代码
pythran -e cli_foo.py 
            -p pythran.optimizations.ConstantFolding
            -o  cli_foo.hpp

# 编译(未验证)
`pythran-config --compiler --cflags` -std=C++11 cli_foo.cpp -o cli_foo

编写c++测试库

vim cli_foo.hpp

复制代码
include cli_foo.hpp
int main(){
   foo()();
   return 0;
}

注意:

pythran无法支持所有py的功能,只有矩阵计算与数学的数据处理,支持较好。其他功能扩展,比如引入第三方库,则需要自己做一些额外的处理。

相关推荐
李可以量化3 小时前
Redis Client 从了解到精通(六):redis-py 服务控制与状态监控辅助函数详解
python
女神下凡3 小时前
芯参谋(11): 各种存储芯片电路设计
开发语言·嵌入式硬件
李可以量化3 小时前
Redis Client 从了解到精通(六)下:redis-py 时间、库管理与持久化辅助函数详解
python
晓窗科技3 小时前
AI基座哪家好
大数据·人工智能·python
冬夜戏雪3 小时前
笔试的Scanner in Scanner out
java·开发语言
麻雀飞吧3 小时前
学量化:看到“近期工具推荐”时,先问工具要解决什么问题
人工智能·python
Zane1994123 小时前
HashSet、TreeSet、LinkedHashSet:底层都是“套壳“
java·开发语言
jayson.h4 小时前
python——pdf编辑
前端·python·pdf
聪明蛋子哟4 小时前
多智能体协作的三种模式:从群聊到分层,如何设计可扩展的Agent系统
后端·python·flask
小小龙学IT4 小时前
ONNX Runtime 开源 AI 推理引擎深度解析:从模型部署到边缘 AI 加速的全栈实战
c++·人工智能·开源