python3 通过 pybind11 使用Eigen加速
python是很容易上手的编程语言,但是有些时候使用python编写的程序并不能保证其运行速度(例如:while 和 for),这个时候我们就需要借助c++等为我们的代码提速。下面是我使用pybind11调用c++的Eigen库的简单介绍:
第一步:准备系统和IDE:
- Windows 10
- vs2015 (用于调试c++代码)
- vscode (调试python代码)
第二步:python虚拟环境:
1.创建虚拟python虚拟环境: 在vscode的terminal中执行
1 |
|
2.下载 Eigen : 将Eigen解压到当前目录命名为 eigen-3.3.8
3.在vscode的terminal中激活虚拟环境:
1 |
|
4.安装pybind11:
1 |
|
安装numpy==1.19.3(使用1.19.4可能会有问题) :
1 |
|
第三步:使用vs2015编写cpp_python.cpp, 并保证没有bug
1 2 3 4 5 6 7 |
|
第四步:使用pybind11为cpp_python.cpp添加python接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
第五步:设置setup.py用来编译c++代码
1 2 3 4 5 6 7 8 9 10 11 |
|
第六步:编译测试
这是我当前的工作目录
注意:我的cpp_python.cpp和setup.py是在同一个文件夹下。
1 |
|
运行测试:
到此这篇关于python3 通过 pybind11 使用Eigen加速代码的步骤详解的文章就介绍到这了,更多相关python3 pybind1
python3 通过 pybind11 使用Eigen加速相关推荐
- 学习笔记 —— 基于C加速的Python高效计算 (Cython pybind11)
目录 引言 Cython 示例介绍 第一阶段优化 第二阶段优化 Cython Annotation tool 优化方法 第三阶段优化 比对下 JIT的Numba 总结 pybind11 Links I ...
- 在Python中调用C/C++:cython及pybind11
在Python中调用C/C++:cython及pybind11 转自:https://zhuanlan.zhihu.com/p/442935082 Python写起来非常方便, 但面对大量for循环的 ...
- Python 绑定:从 Python 调用 C 或 C++
摘要:您是拥有想要从 Python 中使用的C或 C++ 库的 Python 开发人员吗?如果是这样,那么Python 绑定允许您调用函数并将数据从 Python 传递到C或C++,让您利用这两种语言 ...
- MLIR Python绑定
MLIR Python绑定 当前状态:正在开发中,默认情况下未启用 build 前提条件 • 相对较新的Python3安装 • pybind11 必须已安装,可被CMake定位(如果通过进行安装,则会 ...
- linux 编译 编解码
入门demo: g++ -O3 -march=native -Wall -shared -std=c++11 -fPIC -undefined `python3 -m pybind11 --inclu ...
- g++ 编译pybind
简单的: g++ -O3 -march=native -Wall -shared -std=c++11 -fPIC -undefined `python3 -m pybind11 --includes ...
- c++ 内存管理_Python Bindings - 从 Python 调用 C/C++
python 最被人诟病的问题是什么? 慢,这是被人诟病最多的问题,很少人知道具体原因,极少人愿意去深入了解并找到原因,更极少的人愿意付出时间去解决这个问题,很多人都是停留在抱怨吐槽阶段,知乎上有几个 ...
- cuda编程python接口_混合编程[python+cpp+cuda]
很多时候,我们是基于python进行模型的设计和运行,可是基于python本身的速度问题,使得原生态python代码无法满足生产需求,不过我们可以借助其他编程语言来缓解python开发的性能瓶颈.这里 ...
- python c语言接口_C/C++ 提供 Python 接口
C/C++ 和 Python 之间的交互 Tensorflow 的核心代码是 C 和 C++ 实现然后提供 Python 的接口,使用者无需关心 C++ 的细节,直接使用 Python 就能调用相关功 ...
最新文章
- java ajax jquery分页插件_JQueryPagination分页插件,ajax从struts请求数据
- c语言常量类型转换,c语言基础教程常量变量和类型转换,免费版.doc
- mysql 递归查出子级_Mysql选择递归获取具有多个级别的所有子级
- powershell共享服务器写文件,Windows PowerShell:共享您的脚本 - 轻松实现
- [转] 网页不需要漂亮 Ⅰ
- is_file() 和 is_dir()注意事项
- jsp % % ! 区别
- 引用与取地址符的区别
- 记一次git pull 错误
- 用Python实现腾讯云点播VOD
- java八大数据类型_java的八大基本数据类型分别是什么?
- PostgreSQL 用 CTE语法 + 继承 实现平滑拆分大表
- SQL Server 2019数据库还原数据报错
- GetLastError 返回值意义
- javascript URIError: malformed URI sequence 谈谈url编码 encodeURI encodeURIComponent和escape
- IT人的地摊不就是开源么
- matlab模拟分数布朗运动,分数布朗运动及其模拟FractionalBrownianMotion科研菜鸟http.PDF...
- 高等代数_第5章:矩阵的相抵与相似
- 大话西游之东西南北版
- 阿里内部最新 Java 面试解析(全彩版)开源!(分布式 / 中间件 / 高并发 / 设计模式全都有)
热门文章
- Windows下更改MySQL数据库的存储位置
- java设计模式---迭代器模式
- Ubuntu快速截图
- Linux : SUID SGID
- ECC加密算法入门介绍
- linux正则表达式的使用方法,Linux中基本正则表达式
- proc文件系统编程
- computed vue 不 触发_vuejs render何时执行?以及使用vue.$refs遇到的坑。
- 计算机电缆数字是什么意思,DJYPV4*2*1.0 计算机电缆规格含义
- maven 打包_一次打包引发的思考,原来maven还可以这么玩~