最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 通過(guò) pybind11 使用Eigen加速代碼的步驟

 更新時(shí)間:2020年12月07日 10:18:12   作者:好問(wèn)雷  
這篇文章主要介紹了python 通過(guò) pybind11 使用Eigen加速代碼的步驟,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

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

第一步:準(zhǔn)備系統(tǒng)和IDE:

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

第二步:python虛擬環(huán)境:

1.創(chuàng)建虛擬python虛擬環(huán)境: 在vscode的terminal中執(zhí)行 

python -m venv env

2.下載 Eigen: 將Eigen解壓到當(dāng)前目錄命名為 eigen-3.3.8
3.在vscode的terminal中激活虛擬環(huán)境:

 ./env/Scripts/Activate.ps1

4.安裝pybind11:

pip install pybind11

5.安裝numpy==1.19.3(使用1.19.4可能會(huì)有問(wèn)題)

pip install numpy==1.19.3 

第三步:使用vs2015編寫(xiě)cpp_python.cpp, 并保證沒(méi)有bug

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

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

// cpp_python.cpp : 此文件包含 "main" 函數(shù)。程序執(zhí)行將在此處開(kāi)始并結(jié)束。
//
#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";//解釋說(shuō)明
    m.def("mat_add_py"/*在pyhon中使用的函數(shù)名*/, &add_mat);
}

第五步:設(shè)置setup.py用來(lái)編譯c++代碼

from setuptools import setup
from setuptools import Extension

add_mat_module = Extension(name='add_mat_moudle', # 模塊名稱(chēng)
              sources=['cpp_python.cpp'],  # 源碼
              include_dirs=[r'.\eigen-3.3.8',
                    r'.\env\Scripts',   # 依賴(lài)的第三方庫(kù)的頭文件
                     r'.\env\Lib\site-packages\pybind11\include']
              )

setup(ext_modules=[add_mat_module])

第六步:編譯測(cè)試

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

執(zhí)行: "python .\setup.py build_ext --inplace"就會(huì)得下面的結(jié)果,生成.pyd文件表明我們已經(jīng)編譯成功。

運(yùn)行測(cè)試:

以上就是python 通過(guò) pybind11 使用Eigen加速代碼的步驟的詳細(xì)內(nèi)容,更多關(guān)于python 加速代碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 利用Python繪畫(huà)雙擺操作分享

    利用Python繪畫(huà)雙擺操作分享

    這篇文章主要介紹了利用Python畫(huà)雙擺,繪畫(huà)雙擺的過(guò)程主要包括以下步驟,雙擺問(wèn)題、運(yùn)動(dòng)過(guò)程及公式推導(dǎo)過(guò)程,下文詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-04-04
  • python matplotlib庫(kù)繪制散點(diǎn)圖例題解析

    python matplotlib庫(kù)繪制散點(diǎn)圖例題解析

    這篇文章主要介紹了python matplotlib庫(kù)繪制散點(diǎn)圖例題解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python可視化模塊altair的使用詳解

    Python可視化模塊altair的使用詳解

    Altair被稱(chēng)為是統(tǒng)計(jì)可視化庫(kù),因?yàn)樗梢酝ㄟ^(guò)分類(lèi)匯總、數(shù)據(jù)變換、數(shù)據(jù)交互、圖形復(fù)合等。本文和大家聊一下Python當(dāng)中的altair可視化模塊,并且通過(guò)調(diào)用該模塊來(lái)繪制一些常見(jiàn)的圖表,感興趣的可以了解一下
    2022-07-07
  • Pytorch限制或增加CPU使用的核數(shù)方式

    Pytorch限制或增加CPU使用的核數(shù)方式

    這篇文章主要介紹了Pytorch限制或增加CPU使用的核數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • pygame用blit()實(shí)現(xiàn)動(dòng)畫(huà)效果的示例代碼

    pygame用blit()實(shí)現(xiàn)動(dòng)畫(huà)效果的示例代碼

    這篇文章主要介紹了pygame用blit()實(shí)現(xiàn)動(dòng)畫(huà)效果的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • TensorFlow損失函數(shù)專(zhuān)題詳解

    TensorFlow損失函數(shù)專(zhuān)題詳解

    本篇文章主要介紹了TensorFlow損失函數(shù)專(zhuān)題詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python字典添加,刪除,查詢(xún)等相關(guān)操作方法詳解

    Python字典添加,刪除,查詢(xún)等相關(guān)操作方法詳解

    這篇文章主要介紹了Python字典添加,刪除,查詢(xún)等相關(guān)操作方法詳解,需要的朋友可以參考下
    2020-02-02
  • Pycharm Plugins加載失敗問(wèn)題解決方案

    Pycharm Plugins加載失敗問(wèn)題解決方案

    這篇文章主要介紹了Pycharm Plugins加載失敗問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 超實(shí)用Python庫(kù)之lxml使用方法詳解

    超實(shí)用Python庫(kù)之lxml使用方法詳解

    lxml是python的一個(gè)解析庫(kù),支持HTML和XML的解析,支持XPath解析方式,下面這篇文章主要給大家介紹了關(guān)于超實(shí)用Python庫(kù)之lxml使用方法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • Python數(shù)據(jù)序列化之pickle模塊

    Python數(shù)據(jù)序列化之pickle模塊

    這篇文章主要介紹了Python數(shù)據(jù)序列化之pickle模塊,pickle的本質(zhì)是將Python數(shù)據(jù)還原為內(nèi)存中的二進(jìn)制數(shù)據(jù),供用戶(hù)轉(zhuǎn)移、儲(chǔ)存,更多詳細(xì)內(nèi)容,需要的小伙伴可以下面文章內(nèi)容
    2022-03-03

最新評(píng)論

嘉义市| 峨山| 德钦县| 砀山县| 利津县| 赤水市| 成都市| 丰顺县| 涪陵区| 巢湖市| 双辽市| 邮箱| 莎车县| 颍上县| 永安市| 瑞昌市| 南汇区| 陵水| 郴州市| 无锡市| 永善县| 金湖县| 冕宁县| 呼和浩特市| 唐河县| 临江市| 玉门市| 萨迦县| 江都市| 龙陵县| 辛集市| 阳信县| 北京市| 辽阳县| 荆州市| 定结县| 尼勒克县| 潼南县| 鹤庆县| 台东市| 富锦市|