本文主要研究的是使用C++擴(kuò)展Python的功能的相關(guān)問(wèn)題,具體如下。

環(huán)境
VS2005Python2.5.4Windows7(32位)
簡(jiǎn)介
長(zhǎng)話(huà)短說(shuō),這里說(shuō)的擴(kuò)展Python功能與直接用其它語(yǔ)言寫(xiě)一個(gè)動(dòng)態(tài)鏈接庫(kù),然后讓Python來(lái)調(diào)用有點(diǎn)不一樣(雖然本質(zhì)是一樣的)。而是指使用Python本身提供的API,使用C++來(lái)對(duì)Python進(jìn)行功能性擴(kuò)展,可以這樣理解,使用更高效的語(yǔ)言實(shí)現(xiàn)一些算法計(jì)算等等需要更高執(zhí)行效率的核心(或者需要與系統(tǒng)進(jìn)行密切交互的)模塊,然后讓Python像調(diào)用內(nèi)建標(biāo)準(zhǔn)庫(kù)的方式來(lái)調(diào)用這些模塊,聽(tīng)起來(lái)是不是很誘人?!在軟件技術(shù)高速發(fā)展的今天,借助幾種計(jì)算機(jī)語(yǔ)言來(lái)實(shí)現(xiàn)一個(gè)系統(tǒng)的例子數(shù)不勝數(shù),目的不外乎就是性能和便利的平衡。譬如本文要討論的使用C++來(lái)擴(kuò)展Python就是Python和C++的一種巧妙的有機(jī)結(jié)合,好處不言而喻,既可以獲得和C++相似的執(zhí)行性能,又可以利用Python的開(kāi)發(fā)靈活性。由于Python本身是使用C實(shí)現(xiàn)的,二者結(jié)合起來(lái)還是比較容易的。
基本流程
本文不適合這樣的讀者——對(duì)Python完全不了解或者對(duì)C\C++完全不了解,道理你們懂的。另外就是Python里面有6種基本數(shù)據(jù)類(lèi)型。你需要了解如何在C和Python之間對(duì)這些類(lèi)型進(jìn)行轉(zhuǎn)化(這不在本文討論范圍,可以參考[1])。
言歸正傳,感覺(jué)前面說(shuō)得太多了,實(shí)際上很簡(jiǎn)單,因此我決定少說(shuō)多做。一個(gè)C++的Python擴(kuò)展模塊至少應(yīng)該有導(dǎo)出函數(shù),方法列表和初始化函數(shù)三個(gè)部分。我們用VS2005這個(gè)強(qiáng)大的工具開(kāi)工!一般來(lái)說(shuō),你應(yīng)該建一個(gè)Dll工程(至于使用exe來(lái)擴(kuò)展Python可以不可以,暫時(shí)還沒(méi)研究過(guò))。下面按部就班的說(shuō)明(關(guān)鍵說(shuō)明在注釋部分)。
一、初始化函數(shù)
//-------------------------------------------------------------------------
// 函數(shù) : initPyExt
// 功能 : 初始化函數(shù)
// 返回值 :PyMODINIT_FUNC
// 附注 : 注意,這個(gè)函數(shù)的名字不能改動(dòng)。必須是init+模塊名字,
// 我們的模塊名字是PyExt,所以函數(shù)名是initPyExt。Python在導(dǎo)入
// 我們的PyExt模塊時(shí),會(huì)找到這個(gè)函數(shù),并調(diào)用。這個(gè)函數(shù)實(shí)現(xiàn)的
// 功能很簡(jiǎn)單,通過(guò)調(diào)用Py_InitModule將模塊名字和映射表結(jié)合起
// 來(lái),它的意思是說(shuō)PyExt這個(gè)模塊使用PyExtMethods這個(gè)映射表。
//-------------------------------------------------------------------------
PyMODINIT_FUNCinitPyExt()
{
Py_InitModule("PyExt",PyExtMethods);
}另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)標(biāo)題:使用C++擴(kuò)展Python的功能詳解-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://www.jbt999.com/article0/jjhio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、ChatGPT、商城網(wǎng)站、標(biāo)簽優(yōu)化、軟件開(kāi)發(fā)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容