日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

使用python創建生成動態鏈接庫dll的方法

瀏覽:49日期:2022-07-26 09:45:48

如今,隨著深度學習的發展,python已經成為了深度學習研究中第一語言。絕大部分的深度學習工具包都有python的版本,很多重要算法都有python版本的實現。為了將這些算法應用到具體工程中,這些工具包也提供了不同類型的接口。

動態鏈接庫(.dll,.so)是系統開發中一種非常重要的跨語言協作方式。把python語言寫成的算法編譯成動態庫,能夠提供給其他語言調用,這能夠在很大程度上提高算法的開發效率。

但是,雖然python可以調用其他語言生成的動態庫,python作為一種腳本語言,本身是不能直接編譯生成動態庫的。為了生成動態庫,我們借助cython,將python腳本變成c語言文件。具體過程,我們通過一個簡單的例子來解釋。

def str_add(str1,str2): return int(str1) + int(str2)

這個代碼,將兩個數字組成的字符串轉化成數字,并求和。我們把這個代碼保存成run.py備用。根據cython的語法,我們給出cython版本的函數:

cdef public str_add(str1,str2): return int(str1) + int(str2)

和前面python版本的相比,cdef替換了def,并加了public關鍵字,表示這個函數要導出。將這個代碼保存成pyx文件,比如run.pyx。

接下來,我們執行如下命令,把這個代碼變成c語言版本:

cython run.pyx

這時,目錄下面生出來run.h和run.c兩個文件。這個兩個文件通過調用python的C-API實現了run.py代碼的功能。

接下來,我們編寫動態庫的主文件dllmain.c:

#include <Python.h>#include <Windows.h>#include 'run.h' extern __declspec(dllexport) int __stdcall _str_add(const char * a, const char * b) { return PyLong_AsLong(str_add(PyUnicode_FromString(a),PyUnicode_FromString(b)));<br data-filtered='filtered'>} BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpReserved) { switch( fdwReason ) { case DLL_PROCESS_ATTACH: Py_Initialize(); PyInit_run(); #dll初始化的時候調用,這是python3的寫法,python2改成,initrun()。參見生成的run.h break; case DLL_PROCESS_DETACH: Py_Finalize(); break; } return TRUE;}

該文件定義了導出函數_str_add。在python中,所有數據都以pyobject進行存儲。這個函數通過PyUnicode_FromString,將兩個字符串變成python對象類型,并調用run.h里面的函數str_add求和,并把結果通過PyLong_AsLong函數從python對象,變成整形數字。

我們可以通過如下命令,將這個代碼編譯生成dll:

cl /LD dllmain.c run.c -IC:python36include C:python36libspython36.lib

這里python的路徑,根據不同電腦python的安裝位置,做相應調整。

生成的dll,我們寫個簡單調用,測試一下:

#include 'stdio.h'#include 'stdlib.h'extern __declspec(dllexport) int __stdcall _str_add(const char * a, const char * b); #pragma comment(lib,'dllmain.lib') int main(){ printf('%d n', _str_add('123','456')); return 0;}

輸出結果: 579,正好等于123+456。

通過以上步驟,我們已經能夠把python代碼實現的功能,封裝成動態庫。然而,這個動態庫無法在沒有安裝python的機器上面運行。事實上,python代碼,通常需要很多依賴包才能運行。而且,每段代碼需要的依賴包是不一樣的。為了查找這些包,我們采用另外一個工具pyinstaller。具體步驟簡介如下:

virtualenv envpack # 創建新的環境,python包依賴比較復雜,創建新環境可以減少最終引入的包cd envpack # 進入目錄#復制run.py到這個目錄,run.py運行需要的包,和最終dll需要的包是一樣的Scriptsactivate # 激活并切換到virtualenv環境pip install pyinstaller # 安裝打包工具pyinstallerpip install numpy # 安裝numpy等腳本需要的庫,查看你的importpyinstaller run.py # 打包命令Scriptsdeactivate # 打包成功后,使用命令取消激活環境需要打包的文件在envpackdist, 包括很多.dll和.pyd文件,把這些文件和dll一起發布即可。

總結

到此這篇關于使用python創建生成動態鏈接庫dll的方法的文章就介紹到這了,更多相關python動態鏈接庫dll內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆国产精品一区二区三区| 日韩1区2区日韩1区2区| 国产极品一区| 国产精品啊v在线| 国产精品调教| 免费亚洲一区| av资源新版天堂在线| 久久gogo国模啪啪裸体| 免费在线亚洲| 国产69精品久久| 久久精品亚洲人成影院| 91久久视频| 日韩综合一区二区| 国产精品久久久久久久久久久久久久久 | 欧美精品九九| 午夜在线一区| 日韩精品视频中文字幕| 欧美性www| 国产suv精品一区| 久久国产日韩| 亚洲欧洲另类| 日本在线一区二区三区| 欧美aⅴ一区二区三区视频| www.九色在线| 亚洲激情偷拍| 日韩精品免费观看视频| 国产精品白浆| 啪啪国产精品| 中文字幕成人| 久久91视频| 激情综合在线| 日本不卡视频在线观看 | 美女在线视频一区| 日韩在线观看| 免费美女久久99| 久久精品亚洲| 亚洲欧洲午夜| 国产麻豆一区二区三区| 福利在线免费视频| 国产精品免费看| 国产精品久久久一区二区| 免费高潮视频95在线观看网站| 99香蕉国产精品偷在线观看| 国产亚洲一区二区三区不卡 | 国产欧美自拍一区| 日韩精品欧美| 日韩欧美中文字幕一区二区三区| 国产精品超碰| 蜜桃国内精品久久久久软件9| 午夜久久av | 亚洲精品福利| 精品亚洲自拍| 在线视频亚洲| 国内精品伊人| 一区二区亚洲精品| 国产毛片一区二区三区| 91精品国产调教在线观看| 日韩精品a在线观看91| 伊人网在线播放| 综合色就爱涩涩涩综合婷婷| а√天堂中文在线资源8| 亚洲三级国产| 亚洲精品国产嫩草在线观看| 97久久超碰| 免费成人网www| 欧美极品中文字幕| 香蕉久久国产| 韩国精品主播一区二区在线观看 | 久久精品影视| 国产日韩欧美一区二区三区在线观看| 日韩精品欧美| 国产精品久一| 美女久久一区| 欧洲亚洲一区二区三区| 欧美日韩1区2区3区| 亚洲作爱视频| 日韩欧美国产精品综合嫩v| 日本免费一区二区视频| 亚洲国产专区校园欧美| 国产精品久久777777毛茸茸| 亚洲福利精品| 久久影视三级福利片| 中文无码日韩欧| 久久蜜桃资源一区二区老牛| 日韩高清在线不卡| 九九久久国产| 日韩中文字幕无砖| 日韩精品三区四区| 91久久视频| 婷婷激情一区| 精品国产乱码久久久久久樱花| 免费在线观看一区二区三区| 天堂资源在线亚洲| 日韩综合在线| 色狠狠一区二区三区| 亚洲神马久久| 欧美.日韩.国产.一区.二区| 日本а中文在线天堂| 美女视频网站久久| 国产日产精品_国产精品毛片| 免费人成在线不卡| 欧美精品激情| 自拍日韩欧美| 激情欧美丁香| 亚洲精品影视| 亚洲网址在线观看| 亚洲少妇在线| 在线亚洲精品| 中文在线不卡| 亚洲大片在线| 欧美亚洲激情| 久久国产直播| 国产99亚洲| 婷婷国产精品| 久久精品国产亚洲夜色av网站| 桃色一区二区| 精品日韩视频| 亚洲成av在线| 久久蜜桃精品| 99久久激情| 亚洲黑丝一区二区| 激情五月综合网| 精品欧美久久| 亚洲一区二区动漫| 在线亚洲观看| 日韩在线观看一区二区| 一区二区三区国产盗摄| 麻豆91精品| 日韩一区二区三区精品| 亚洲精品观看| 国产探花一区在线观看| 日本va欧美va精品发布| 国产精品v一区二区三区| 国产精品视频一区二区三区四蜜臂 | 亚洲另类视频| 亚洲小说春色综合另类电影| 亚洲精品系列| 国产亚洲电影| 精品一区二区三区免费看| 91欧美国产| 99久久久久国产精品| 亚洲深夜福利| 日本中文字幕一区二区视频| 欧美日韩亚洲三区| 国产福利亚洲| 伊人网在线播放| 亚洲国产影院| 日韩精品一区第一页| 亚洲精品一二| 国产欧美日韩在线一区二区| 欧美精品成人| 精品欧美一区二区三区在线观看| 激情欧美国产欧美| 免费在线成人网| 欧美亚洲色图校园春色| 久久精品资源| 婷婷综合六月| 中文无码日韩欧| 国产精品magnet| 老牛影视精品| 国产精品美女久久久浪潮软件| 日本伊人久久| 国产一区二区三区黄网站 | 麻豆国产91在线播放| 久久国产电影| 一级欧美视频| 精品无人区麻豆乱码久久久| 久久视频精品| 日韩一区二区三免费高清在线观看| 国产伦精品一区二区三区在线播放| a天堂资源在线| 亚洲女人av| 精品一区二区三区在线观看视频 | 蜜臀精品一区二区三区在线观看 | 日本中文字幕一区二区视频| 蜜桃精品视频| 91久久久精品国产| 欧美精品中文| 欧美.日韩.国产.一区.二区 | 欧美精品观看| 亚洲91视频| 青草国产精品| 久久久久久久久久久9不雅视频| 亚洲乱码视频| 精品国产免费人成网站| 亚洲视频二区| 国产精品115| 国产美女一区| 91亚洲自偷观看高清| 亚洲精品精选| 快播电影网址老女人久久| 亚州av一区| 久久久久欧美精品| 欧美久久亚洲| 伊人久久亚洲热| 精品国产亚洲一区二区三区在线 | 国产精品专区免费| 天堂俺去俺来也www久久婷婷| 免费一二一二在线视频| 欧美一区网站|