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

解析Python擴(kuò)展模塊的加速方案

 更新時間:2021年09月13日 09:30:38   作者:燕山588  
這章我們來介紹Python的擴(kuò)展名之ctypes,教大家認(rèn)識ctypes,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進(jìn)步,早日升職加薪

ctypes(一)

 — 初識

 很多初學(xué)Python的新手,總是嘴邊掛著一句話:“Python是一門膠水語言”。

可是究竟什么是膠水語言呢?相信很多人都不知道,或者誤以為膠水就是可以直接和其他所有語言配合的語言。

雖然如今Python已經(jīng)發(fā)展得很強(qiáng)大了,“膠水語言”這個特性已經(jīng)很少被提及了。但是膠水仍然是它現(xiàn)在應(yīng)用得最廣泛的特性之一。只不過從曾經(jīng)Python為輔變成了如今的Python為主而已。

那么到底什么是“膠水特性”呢?

其實(shí)Python自打出生以來就和C語言有莫大的關(guān)聯(lián),它可以調(diào)用現(xiàn)有的C/C++程序,而不用做那些重復(fù)造輪子的事。使得節(jié)約了大量的重新開發(fā)的成本。許多的現(xiàn)有C程序代碼可以用一個Python作為中樞來管理和調(diào)用,就好像這些C程序“被膠水粘住了”一樣。這就是膠水特性的來源。

隨著Python語言的發(fā)展,Python已經(jīng)變得足夠強(qiáng)大和健壯,在不斷優(yōu)化性能的過程中,膠水這一特性被逐漸弱化,因?yàn)镻ython已經(jīng)強(qiáng)大到不需要依附C語言而存在。但是這一特性讓然被保留了下來。那么,既然Python已經(jīng)足夠強(qiáng)大,那么還需要這一特性做什么呢?

說到底,Python是一個解釋型動態(tài)腳本語言,再加上十幾年沒有解決的GIL鎖,無論是執(zhí)行效率還是并發(fā)性都是Python最大的缺點(diǎn)。

因此這個特性的存在給如今的Pythoner一個新的選擇,那些對執(zhí)行效率和并發(fā)性有著極高要求的模塊,使用C來實(shí)現(xiàn)。使用C來輔助Python解決某些特殊情況下的性能問題,成了如今Python社區(qū)中最為普遍的方案,很多人不知道,事實(shí)上很多我們常用的庫都利用了這一特性。

數(shù)據(jù)兼容層

由于Python這一特性是一個大家族,我們先來了解一下Python與C之間做的一個兼容層模塊 — ctypes 模塊。

了解 ctypes模塊之前,我們需要先了解 ctypes 提供了哪些用于兼容的數(shù)據(jù)類型:

注:一下表格是根據(jù)Python3版本列出,區(qū)別僅僅是原生字符串類型和long整型而已

圖片.png

圖片.png

嘗試共享庫

什么是共享庫?

其實(shí)C語言在經(jīng)過編譯之后不一定要生成可執(zhí)行文件,可以以一種共享給其他程序調(diào)用的“共享庫”的形式存在,其他程序通過調(diào)用這個共享庫,就可以利用這個現(xiàn)有C編譯過的程序了。

為了對各位新手朋友能夠更加產(chǎn)生更加直接的幫助,我們以Windows系統(tǒng)為例,調(diào)用VC共享庫。Windows下默認(rèn)給VC共享庫加上dll擴(kuò)展名后綴。

我們以加載 cdecl 調(diào)用規(guī)則函數(shù)的 cdll 模塊進(jìn)行展示

首先,我們必須要導(dǎo)入 cdll 可以參考一下語句

from ctypes import cdll

然后可以直接通過對 cdll 的屬性訪問獲得 msvcrt.dll 共享庫文件的連接

libc = cdll.msvcrt

接著,我們就可以從這個共享庫中獲得相應(yīng)的VC函數(shù)了,最常見的是printf函數(shù)(ps:不知道有沒有引起一些老司機(jī)的眼淚呢?)

printf = libc.printf

既然已經(jīng)拿到了一個共享庫中的函數(shù),那么我們就來牛刀小試一下吧

我們首先在IDLE里面試著運(yùn)行一下

什么也沒有發(fā)生!貌似被深深的欺騙了!別急,這其中自由原因。

我們先來看看,printf函數(shù)調(diào)用的結(jié)果是什么,使用print查看

看樣子printf函數(shù)的返回值是輸出的字節(jié)數(shù),可是我們還有一個問題沒有解決,那就是,輸出在哪呢?

其實(shí)printf函數(shù)是C的函數(shù),并不會輸出到Python中來,因此要使用控制臺來輸出

是不是已經(jīng)成功輸出了?

在了解這些最基礎(chǔ)的知識以后,我們就可以更加深入的去了解其中相關(guān)的規(guī)則,下次我們會具體介紹一些其中的規(guī)則,讓你對這個庫的使用更加得心應(yīng)手。

以上就是解析Python擴(kuò)展模塊的加速方案的詳細(xì)內(nèi)容,更多關(guān)于Python擴(kuò)展模塊加速方案的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python使用reportlab模塊生成PDF格式的文檔

    Python使用reportlab模塊生成PDF格式的文檔

    今天小編就為大家分享一篇關(guān)于Python使用reportlab模塊生成PDF格式的文檔,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 一個Python最簡單的接口自動化框架

    一個Python最簡單的接口自動化框架

    這篇文章主要為大家詳細(xì)介紹了一個Python最簡單的接口自動化框架,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python批量合并有合并單元格的Excel文件詳解

    Python批量合并有合并單元格的Excel文件詳解

    經(jīng)常使用Excel的用戶都知道,合并單元格的存在,這篇文章主要給大家介紹了關(guān)于利用Python如何批量合并有合并單元格的Excel文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2018-04-04
  • Python實(shí)時監(jiān)控網(wǎng)站瀏覽記錄實(shí)現(xiàn)過程詳解

    Python實(shí)時監(jiān)控網(wǎng)站瀏覽記錄實(shí)現(xiàn)過程詳解

    這篇文章主要介紹了Python實(shí)時監(jiān)控網(wǎng)站瀏覽記錄實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Python通過kerberos安全認(rèn)證操作kafka方式

    Python通過kerberos安全認(rèn)證操作kafka方式

    這篇文章主要介紹了Python通過kerberos安全認(rèn)證操作kafka方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Pandas保存csv數(shù)據(jù)的三種方式詳解

    Pandas保存csv數(shù)據(jù)的三種方式詳解

    CSV文件以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本),是一種通用的、相對簡單的文件格式,被用戶、商業(yè)和科學(xué)廣泛應(yīng)用。本文介紹了三種Pandas保存CSV文件數(shù)據(jù)的方法,需要的可以參考一下
    2022-03-03
  • 基于python進(jìn)行桶排序與基數(shù)排序的總結(jié)

    基于python進(jìn)行桶排序與基數(shù)排序的總結(jié)

    今天小編就為大家分享一篇基于python進(jìn)行桶排序與基數(shù)排序的總結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 基于文件路徑中/?\?//?\\的用法以及絕對相對路徑的問題

    基于文件路徑中/?\?//?\\的用法以及絕對相對路徑的問題

    這篇文章主要介紹了基于文件路徑中/?\?//?\\的用法以及絕對相對路徑的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 淺談PyTorch的數(shù)據(jù)讀取機(jī)制Dataloader與Dataset

    淺談PyTorch的數(shù)據(jù)讀取機(jī)制Dataloader與Dataset

    這篇文章主要介紹了淺談PyTorch的數(shù)據(jù)讀取機(jī)制Dataloader與Dataset,DataLoader的作用是構(gòu)建一個可迭代的數(shù)據(jù)裝載器,每次執(zhí)行循環(huán)的時候,就從中讀取一批Batchsize大小的樣本進(jìn)行訓(xùn)練,需要的朋友可以參考下
    2023-07-07
  • Python疊加矩形框圖層2種方法及效果

    Python疊加矩形框圖層2種方法及效果

    這篇文章主要介紹了Python疊加矩形框圖層2種方法及效果,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06

最新評論

县级市| 漳州市| 祁阳县| 车致| 高平市| 吴川市| 威信县| 南郑县| 普洱| 方山县| 汪清县| 临西县| 天峻县| 宣武区| 靖边县| 马山县| 平乐县| 天等县| 湖州市| 洛宁县| 宣武区| 习水县| 上饶县| 丰镇市| 维西| 巴东县| 东莞市| 光泽县| 麻栗坡县| 会昌县| 兴和县| 措美县| 灵石县| 武冈市| 台中市| 南城县| 毕节市| 高阳县| 台州市| 察隅县| 宽甸|