麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

使用C++擴展Python的功能詳解

2020-02-16 11:37:37
字體:
來源:轉載
供稿:網友

本文主要研究的是使用C++擴展Python的功能的相關問題,具體如下。

環境

VS2005Python2.5.4Windows7(32位)

簡介

長話短說,這里說的擴展Python功能與直接用其它語言寫一個動態鏈接庫,然后讓Python來調用有點不一樣(雖然本質是一樣的)。而是指使用Python本身提供的API,使用C++來對Python進行功能性擴展,可以這樣理解,使用更高效的語言實現一些算法計算等等需要更高執行效率的核心(或者需要與系統進行密切交互的)模塊,然后讓Python像調用內建標準庫的方式來調用這些模塊,聽起來是不是很誘人?!在軟件技術高速發展的今天,借助幾種計算機語言來實現一個系統的例子數不勝數,目的不外乎就是性能和便利的平衡。譬如本文要討論的使用C++來擴展Python就是Python和C++的一種巧妙的有機結合,好處不言而喻,既可以獲得和C++相似的執行性能,又可以利用Python的開發靈活性。由于Python本身是使用C實現的,二者結合起來還是比較容易的。

基本流程

本文不適合這樣的讀者——對Python完全不了解或者對C/C++完全不了解,道理你們懂的。另外就是Python里面有6種基本數據類型。你需要了解如何在C和Python之間對這些類型進行轉化(這不在本文討論范圍,可以參考[1])。

言歸正傳,感覺前面說得太多了,實際上很簡單,因此我決定少說多做。一個C++的Python擴展模塊至少應該有導出函數,方法列表和初始化函數三個部分。我們用VS2005這個強大的工具開工!一般來說,你應該建一個Dll工程(至于使用exe來擴展Python可以不可以,暫時還沒研究過)。下面按部就班的說明(關鍵說明在注釋部分)。

一、初始化函數

//-------------------------------------------------------------------------// 函數    : initPyExt// 功能    : 初始化函數// 返回值   :PyMODINIT_FUNC// 附注    : 注意,這個函數的名字不能改動。必須是init+模塊名字,// 我們的模塊名字是PyExt,所以函數名是initPyExt。Python在導入// 我們的PyExt模塊時,會找到這個函數,并調用。這個函數實現的// 功能很簡單,通過調用Py_InitModule將模塊名字和映射表結合起// 來,它的意思是說PyExt這個模塊使用PyExtMethods這個映射表。//-------------------------------------------------------------------------PyMODINIT_FUNCinitPyExt(){    Py_InitModule("PyExt",PyExtMethods);}

二、方法列表

/*   方法列表,這個是一個C結構數組。把需要擴展的函數都映射到這個表里。   那么Python就知道你的這個擴展模塊支持一些什么方法了。表的第一個字   段是方法名字,也是通過Python來調用時的名字。第二個字段是導出函數,   是真正調用的函數,也是C/C++實現的函數。第三個參數是指明Python向   C/C++函數傳遞參數的形式。可選的兩種方式是METH_VARARGS和   METH_KEYWORDS,其中METH_VARARGS是參數傳遞的標準形式,它通   過Python的元組在Python解釋器和C函數之間傳遞參數,若采用   METH_KEYWORD方式,則Python解釋器和C函數之間將通過Python的字典   類型在兩者之間進行參數傳遞。第四個字段是這個函數的說明。如果你在   python里來help這個函數,將顯示這個說明。相當于在python里的函數的文檔說明。*/staticPyMethodDefPyExtMethods[]={    {"Add", Add,METH_VARARGS,"Addtwo number - edit by magictong."},    {"ExecSystem",ExecSystem,METH_VARARGS,"Execute a shell command - edit bymagictong." },    {NULL,NULL, 0,NULL}};            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 99精品视频在线导航 | 一区二区三区四区高清视频 | 欧美五月婷婷 | 欧美激情精品久久久久久黑人 | 久久久电影电视剧免费看 | 亚洲一区二区免费视频 | 日本一区二区视频在线观看 | 精品黑人一区二区三区国语馆 | 最新中文字幕在线 | 精品一区二区三区在线播放 | 日韩a毛片免费观看 | 一区二区三区日韩电影 | 欧美一级美片在线观看免费 | 性大片免费看 | 成人三级电影网址 | 久久久久久久久久网 | 桥本有菜免费av一区二区三区 | 成人在线网站 | 91精品国产刺激国语对白 | 广州毛片 | 亚洲午夜久久久精品一区二区三区 | 精品国产91久久久久久浪潮蜜月 | 新久草视频 | 国内精品久久久久久影视8 嫩草影院在线观看网站成人 | 黄色毛片一级视频 | 午夜啪视频 | 国产福利视频在线观看 | 欧美日韩国产成人在线 | 国产精品久久久久久238 | 久久久久久亚洲综合影院红桃 | 久久精品男人 | 欧美顶级毛片在线播放小说 | 久久91精品久久久久清纯 | 欧美性受xxx黑人xyx性爽 | 国产一区二区三区影视 | 久草资源在线观看 | 久久久一区二区三区精品 | 在线观看中文字幕av | 午夜丰满少妇高清毛片1000部 | 国产精品伦视频看免费三 | 久久国产精品99国产 |