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的功能,只有矩阵计算与数学的数据处理,支持较好。其他功能扩展,比如引入第三方库,则需要自己做一些额外的处理。

相关推荐
九九落17 分钟前
JavaScript 实现北京时间精确到毫秒显示:UTC+8、Asia/Shanghai 与在线时间校准详解
开发语言·javascript·ecmascript
AC赳赳老秦19 分钟前
企业级合规审计体系:用 OpenClaw 落地采集全链路留痕,自动生成合规审计报告
java·python·django·beautifulsoup·php·deepseek·openclaw
IPdodo_35 分钟前
代理 IP 服务商 SLA 怎么验?7 项指标与 Python 探测脚本实战
运维·python·网络协议·网络安全·代理ip
微软技术分享41 分钟前
使用Masscan扫描器进行信息搜集
python·masscan·信息搜集
青 春 记 忆42 分钟前
零基础入门python23:Flask-Login登录、退出与会话
python·flask·后端开发
东华万里1 小时前
第41篇 C++类与对象核心知识梳理:从底层原理到面试实战
开发语言·c++·大学生专区
微小冷1 小时前
Python图论库NetworkX初步
开发语言·python·图论·graph·networkx·digraph
qq_589666052 小时前
C语言、C++与C#的区别详解
c语言·c++·c#
万法若空2 小时前
排列组合恒等式
c++·算法
Data_Journal2 小时前
如何使用 Python 抓取 Google Flights:分步指南
大数据·开发语言·数据库·python·scrapy