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

Python調(diào)用C語言的實現(xiàn)

 更新時間:2019年07月26日 10:38:54   作者:debuggor  
這篇文章主要介紹了Python調(diào)用C語言的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Python中的ctypes模塊可能是Python調(diào)用C方法中最簡單的一種。ctypes模塊提供了和C語言兼容的數(shù)據(jù)類型和函數(shù)來加載dll文件,因此在調(diào)用時不需對源文件做任何的修改。也正是如此奠定了這種方法的簡單性。

示例如下

實現(xiàn)兩數(shù)求和的C代碼,保存為add.c

//sample C file to add 2 numbers - int and floats

#include <stdio.h>

int add_int(int, int);
float add_float(float, float);

int add_int(int num1, int num2){
  return num1 + num2;

}

float add_float(float num1, float num2){
  return num1 + num2;

}

接下來將C文件編譯為.so文件(windows下為DLL)。下面操作會生成adder.so文件

#For Linux
$ gcc -shared -Wl,-soname,adder -o adder.so -fPIC add.c

#For Mac
$ gcc -shared -Wl,-install_name,adder.so -o adder.so -fPIC add.c

#For windows
$
gcc -shared -Wl,-soname,adder -o adder.dll -fPIC add.c

現(xiàn)在在你的Python代碼中來調(diào)用它

from ctypes import *

#load the shared object file
adder = CDLL('./adder.so')

#Find sum of integers
res_int = adder.add_int(4,5)
print "Sum of 4 and 5 = " + str(res_int)

#Find sum of floats
a = c_float(5.5)
b = c_float(4.1)

add_float = adder.add_float
add_float.restype = c_float
print "Sum of 5.5 and 4.1 = ", str(add_float(a, b))

輸出如下

Sum of 4 and 5 = 9
Sum of 5.5 and 4.1 =  9.60000038147

在這個例子中,C文件是自解釋的,它包含兩個函數(shù),分別實現(xiàn)了整形求和和浮點型求和。

在Python文件中,一開始先導(dǎo)入ctypes模塊,然后使用CDLL函數(shù)來加載我們創(chuàng)建的庫文件。這樣我們就可以通過變量adder來使用C類庫中的函數(shù)了。當adder.add_int()被調(diào)用時,內(nèi)部將發(fā)起一個對C函數(shù)add_int的調(diào)用。ctypes接口允許我們在調(diào)用C函數(shù)時使用原生Python中默認的字符串型和整型。

而對于其他類似布爾型和浮點型這樣的類型,必須要使用正確的ctype類型才可以。如向adder.add_float()函數(shù)傳參時, 我們要先將Python中的十進制值轉(zhuǎn)化為c_float類型,然后才能傳送給C函數(shù)。這種方法雖然簡單,清晰,但是卻很受限。例如,并不能在C中對對象進行操作。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python實現(xiàn)簡易猜數(shù)小游戲

    python實現(xiàn)簡易猜數(shù)小游戲

    大家好,本篇文章主要講的是python實現(xiàn)簡易猜數(shù)小游戲,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • python 如何查看pytorch版本

    python 如何查看pytorch版本

    這篇文章主要介紹了python 查看pytorch版本的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python虛擬環(huán)境virtualenv的安裝與使用詳解

    Python虛擬環(huán)境virtualenv的安裝與使用詳解

    virtualenv可以用來管理互不干擾的獨立python虛擬環(huán)境,在有些場景下非常有用,下面這篇文章主要給大家介紹了Python虛擬環(huán)境virtualenv安裝與使用的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • Python自動重試HTTP連接裝飾器

    Python自動重試HTTP連接裝飾器

    這篇文章主要介紹了Python自動重試HTTP連接裝飾器,有時候我們要去別的接口取數(shù)據(jù),可能因為網(wǎng)絡(luò)原因偶爾失敗,為了能自動重試,寫了這么一個裝飾器,可以實現(xiàn)自動重連2次,需要的朋友可以參考下
    2015-04-04
  • python選取特定列 pandas iloc,loc,icol的使用詳解(列切片及行切片)

    python選取特定列 pandas iloc,loc,icol的使用詳解(列切片及行切片)

    今天小編就為大家分享一篇python選取特定列 pandas iloc,loc,icol的使用詳解(列切片及行切片),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 如何使用pycharm連接Databricks的步驟詳解

    如何使用pycharm連接Databricks的步驟詳解

    這篇文章主要介紹了如何使用pycharm連接Databricks,本文分步驟給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 從零學python系列之數(shù)據(jù)處理編程實例(一)

    從零學python系列之數(shù)據(jù)處理編程實例(一)

    本文目的:用一個實例總結(jié)學習到的with語句,函數(shù),列表推導(dǎo),集合,排序,字符分割等內(nèi)容
    2014-05-05
  • 在python中實現(xiàn)發(fā)送短信功能

    在python中實現(xiàn)發(fā)送短信功能

    工作中我們經(jīng)常會用到發(fā)短信的需求,那么如何在python代碼中實現(xiàn)發(fā)短息你的需求呢,本文我們就一起深入探討下,文中有詳細的代碼示例供大家參考,具有一定的參考價值,需要的朋友可以參考下
    2024-04-04
  • Django實現(xiàn)基于類的分頁功能

    Django實現(xiàn)基于類的分頁功能

    這篇文章主要為大家詳細介紹了Django實現(xiàn)基于類的分頁功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • python pycharm的安裝及其使用

    python pycharm的安裝及其使用

    這篇文章主要介紹了python pycharm的安裝及其使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10

最新評論

揭阳市| 公安县| 余江县| 宁南县| 莎车县| 广安市| 鄢陵县| 砀山县| 贡嘎县| 宝丰县| 武冈市| 阿拉善盟| 晋城| 邹城市| 福建省| 中江县| 博兴县| 佛坪县| 西丰县| 阳山县| 城固县| 洪雅县| 孝昌县| 英山县| 政和县| 南漳县| 宝山区| 土默特左旗| 阿图什市| 卢湾区| 辽源市| 绥化市| 东海县| 台南市| 贡觉县| 琼结县| 临沭县| 丽江市| 什邡市| 云林县| 盐亭县|