国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
如何讓Python可以擁有C語言的飛速運(yùn)行?從這里開始

眾所周知,Python簡單易用,好上手,十分適合各種開發(fā),同時更適合非IT人士進(jìn)行簡單開發(fā),和程序員交流。但是也有起局限性:

缺點(diǎn):

1.代碼不能加密

因?yàn)镻YTHON是解釋性語言,它的源碼都是以明文形式存放的,不過我不認(rèn)為這算是一個缺點(diǎn),如果你的項(xiàng)目要求源代碼必須是加密的,那你一開始就不應(yīng)該用Python來去實(shí)現(xiàn)。

2. 多線程支持不好

3.Python慢

Python相對C語言確實(shí)慢很多,但其實(shí)這里所指的速度慢在大多數(shù)時候我們是無法感知的,比如說,是用C語言程序開發(fā)了一個程序,執(zhí)行需要花0.01秒,使用Python實(shí)現(xiàn)同樣功能的程序,需要花0.1秒

的時間,雖然相差10倍,但是我們基本是感知不到的。更多的時候,程序慢是程序員實(shí)現(xiàn)功能方式導(dǎo)致的。就好像開罐頭的時候,有的人用牙咬,有的人用工具,這樣兩個人的效率相比起來就差了很多。

今天我們就用和大家分享一下Python的C拓展,讓它也可以有C的速度

1. 環(huán)境準(zhǔn)備

如果是Linux只需要安裝Python3.x + Python-dev。

Windows下稍微復(fù)雜點(diǎn),VS2017 + Python3.6.3

VS2017可用社區(qū)版,需要選擇安裝的環(huán)境如下:

2. Hello World !

2.1 C模塊封裝

以計(jì)算兩個數(shù)相加為例,選擇任意文件夾,新建如下C語言源碼:

其中,靜態(tài)函數(shù) calc_add 以python的C接口方式封裝了add函數(shù),命名方式 模塊名_函數(shù)名

靜態(tài)PyMethodDef列表 變量 CalcMethods 包含了該模塊方法的描述

靜態(tài)struct PyModuleDef結(jié)構(gòu)體 變量 calcmodule 定義了模塊的描述

PyInit_calc 函數(shù)初始化了模塊,命名方式 PyInit_模塊名

2.2 C源碼編譯

在VS2017中可以直接生成 .dll 文件,然后改名為 .pyd 就可在python程序中引入該模塊了,但是,這不'清真',正確的姿勢是寫一個 setup.py然后通過python調(diào)cl.exe編譯。

新建 setup.py文件,內(nèi)容如下:

然后,從Windows的命令行(命令提示符)下進(jìn)入到這個文件夾下,執(zhí)行:

python setup.py build

即可完成編譯,如果出現(xiàn)某

.bat

文件未找到,說明你的VS沒有安裝相應(yīng)的依賴(Linux下編譯不成功原因可能是沒有裝python-dev),按文章開頭給出的依賴庫添加修改(此時不需要重新安裝VS)。

編譯結(jié)束后,在該文件夾下會出現(xiàn)build文件夾,進(jìn)入該文件夾,出現(xiàn)如下兩個文件夾:

進(jìn)入lib.xxx那個文件夾,里面有個.pyd結(jié)尾的文件(Linux下為.so結(jié)尾),這就是我們編譯好的python模塊了,如下:

當(dāng)然,你也可以改名為calc.pyd比較好看,不過這不影響調(diào)用。

2.3 Python調(diào)用

這部分就簡單了,進(jìn)入含有編譯好的.pyd文件夾,新建如下文件:

這就是一個普通庫,這樣調(diào)用就OK了。

3. Python的參數(shù)傳遞以及C的返回值相關(guān)問題

這部分我直接甩出文件就行,編譯及調(diào)用過程與上面一樣。

C 文件

如果你選擇了自學(xué),我想給你提幾點(diǎn)建議:

1.找淺顯易懂,例程比較好的教程,從頭到尾看下去。不要看很多本,專注于一本。把里面的例程都手打一遍,搞懂為什

么。

2.去找實(shí)際項(xiàng)目練手。最好是要有真實(shí)的項(xiàng)目做。可以找?guī)讉€同學(xué)一起做個網(wǎng)站之類。注意,真實(shí)項(xiàng)目不一定非要是商業(yè)

項(xiàng)目。

3.最好能找到一個已經(jīng)會python的人。問他一點(diǎn)學(xué)習(xí)規(guī)劃的建議,然后在遇到卡殼的地方找他指點(diǎn)。這樣會事半功倍。

4.另外,除了學(xué)習(xí)編程語言,也兼顧補(bǔ)一點(diǎn)計(jì)算機(jī)基礎(chǔ),和英語。

5.不但要學(xué)寫代碼,還要學(xué)會看代碼,更要會調(diào)試代碼。讀懂你自己程序的報錯信息。再去找些github上的程序,讀懂別

人的代碼。

6.學(xué)會查文檔,用好搜索引擎和開發(fā)者社區(qū)。

就是以上這些,希望你能有所收獲。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
怎么給 Python 寫 C 擴(kuò)展?
Python代碼的打包與發(fā)布詳解
詳解python包中的__init__.py
[Rust 開發(fā)]PyO3:Rust與Python的聯(lián)動編程(上)
Python數(shù)據(jù)分析(我行,你也行!) 1.1入門
靈活簡捷的編程語法結(jié)構(gòu),用python就是被套路!
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服