电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 通過 pybind11 使用Eigen加速代碼的步驟

瀏覽:10日期:2022-07-03 08:05:48

python是很容易上手的編程語言,但是有些時候使用python編寫的程序并不能保證其運行速度(例如:while 和 for),這個時候我們就需要借助c++等為我們的代碼提速。下面是我使用pybind11調用c++的Eigen庫的簡單介紹:

第一步:準備系統和IDE:

Windows 10 vs2015 (用于調試c++代碼)vscode (調試python代碼)

第二步:python虛擬環境:

1.創建虛擬python虛擬環境: 在vscode的terminal中執行

python -m venv env

2.下載 Eigen: 將Eigen解壓到當前目錄命名為 eigen-3.3.83.在vscode的terminal中激活虛擬環境:

./env/Scripts/Activate.ps1

python 通過 pybind11 使用Eigen加速代碼的步驟

4.安裝pybind11:

pip install pybind11

5.安裝numpy==1.19.3(使用1.19.4可能會有問題)

pip install numpy==1.19.3

第三步:使用vs2015編寫cpp_python.cpp, 并保證沒有bug

#include <Eigen/Dense>using namespace stdusing namespace EigenMatrixXd add_mat(MatrixXd A_mat, MatrixXd B_mat){ return A_mat + B_mat;}

第四步:使用pybind11為cpp_python.cpp添加python接口

// cpp_python.cpp : 此文件包含 'main' 函數。程序執行將在此處開始并結束。//#include <pybind11/pybind11.h>#include <pybind11/eigen.h>#include<pybind11/numpy.h>#include<fstream>#include<iostream>#include <Eigen/Dense>using namespace std;using namespace Eigen; MatrixXd add_mat(MatrixXd A_mat, MatrixXd B_mat){ return A_mat + B_mat;} namespace py = pybind11;PYBIND11_MODULE(add_mat_moudle, m){ m.doc() = 'Matrix add';//解釋說明 m.def('mat_add_py'/*在pyhon中使用的函數名*/, &add_mat);}

第五步:設置setup.py用來編譯c++代碼

from setuptools import setupfrom setuptools import Extensionadd_mat_module = Extension(name=’add_mat_moudle’, # 模塊名稱 sources=[’cpp_python.cpp’], # 源碼 include_dirs=[r’.eigen-3.3.8’, r’.envScripts’, # 依賴的第三方庫的頭文件 r’.envLibsite-packagespybind11include’] )setup(ext_modules=[add_mat_module])

第六步:編譯測試

python 通過 pybind11 使用Eigen加速代碼的步驟

注意:我的cpp_python.cpp和setup.py是在同一個文件夾下。

執行: 'python .setup.py build_ext --inplace'就會得下面的結果,生成.pyd文件表明我們已經編譯成功。

python 通過 pybind11 使用Eigen加速代碼的步驟

運行測試:

python 通過 pybind11 使用Eigen加速代碼的步驟

以上就是python 通過 pybind11 使用Eigen加速代碼的步驟的詳細內容,更多關于python 加速代碼的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 不锈钢螺丝 - 六角螺丝厂家 - 不锈钢紧固件 - 万千紧固件--紧固件一站式采购 | 自进式锚杆-自钻式中空注浆锚杆-洛阳恒诺锚固锚杆生产厂家 | 小型气象站_便携式自动气象站_校园气象站-竞道气象设备网 | 食品无尘净化车间,食品罐装净化车间,净化车间配套风淋室-青岛旭恒洁净技术有限公司 | 日本SMC气缸接头-速度控制阀-日本三菱伺服电机-苏州禾力自动化科技有限公司 | 河北凯普威医疗器材有限公司,高档轮椅系列,推车系列,座厕椅系列,协步椅系列,拐扙系列,卫浴系列 | 流程管理|流程管理软件|企业流程管理|微宏科技-AlphaFlow_流程管理系统软件服务商 | 仿真植物|仿真树|仿真花|假树|植物墙 - 广州天昆仿真植物有限公司 | 塑胶地板-商用PVC地板-pvc地板革-安耐宝pvc塑胶地板厂家 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 钣金加工厂家-钣金加工-佛山钣金厂-月汇好| 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 学习安徽网| CE认证_FCC认证_CCC认证_MFI认证_UN38.3认证-微测检测 CNAS实验室 | 金属切削液-脱水防锈油-电火花机油-抗磨液压油-深圳市雨辰宏业科技发展有限公司 | 天然鹅卵石滤料厂家-锰砂滤料-石英砂滤料-巩义东枫净水 | 砂尘试验箱_淋雨试验房_冰水冲击试验箱_IPX9K淋雨试验箱_广州岳信试验设备有限公司 | 利浦顿蒸汽发生器厂家-电蒸汽发生器/燃气蒸汽发生器_湖北利浦顿热能科技有限公司官网 | 高温高压釜(氢化反应釜)百科 | 合肥网带炉_安徽箱式炉_钟罩炉-合肥品炙装备科技有限公司 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 膏方加工_丸剂贴牌_膏滋代加工_湖北康瑞生物科技有限公司 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | Type-c防水母座|贴片母座|耳机接口|Type-c插座-深圳市步步精科技有限公司 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 气体热式流量计-定量控制流量计(空气流量计厂家)-湖北南控仪表科技有限公司 | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 交联度测试仪-湿漏电流测试仪-双85恒温恒湿试验箱-常州市科迈实验仪器有限公司 | 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 脱硝喷枪-氨水喷枪-尿素喷枪-河北思凯淋环保科技有限公司 | 购买舔盐、舔砖、矿物质盐压块机,鱼饵、鱼饲料压块机--请到杜甫机械 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 工业铝型材生产厂家_铝合金型材配件批发精加工定制厂商 - 上海岐易铝业 | 常州律师事务所_常州律所_常州律师-江苏乐天律师事务所 | Copeland/谷轮压缩机,谷轮半封闭压缩机,谷轮涡旋压缩机,型号规格,技术参数,尺寸图片,价格经销商 CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | CTAB,表面活性剂1631溴型(十六烷基三甲基溴化铵)-上海升纬化工原料有限公司 |