由於python效能問題的原因,在實際專案中往往會在python中去呼叫c的一些方法,本文將介紹在centos8下面python去呼叫c的方法。
c的示例**如下:
#include
#include
#include
#include
typedef
struct
node;
intadd
(node node)
void
display()
然後將這個c檔案編譯成動態鏈結庫
gcc -o libpycall.so -shared -fpic python_call_c.c
# 動態鏈結庫名稱需要以lib開頭,在這裡libpycall.so就是我們編譯成的so庫
接下來我們就可以在python中去引用c中的這兩個方法了
python提供的ctypes庫來引用這些方法。
我們可以先看下簡單的呼叫,先只呼叫display方法,python**如下:
那麼如果我們想傳乙個結構體引數該怎麼辦呢?ctypes庫也為我們提供了資料型別對映表
類必須繼承自 ctypes.structure,每個子類必須定義乙個_fields_屬性,示例**如下:
import ctypes
from ctypes import
*load = ctypes.cdll.loadlibrary
obj = load(
"./libpycall.so"
)
obj.display();
class
add(structure)
: _fields_ =[(
'a', c_int),(
'b', c_int)
]_add = add(1,
10)res = obj.add(_add)
print
(res)
結果如下圖所示:
如何在Python中引用zookeeper的py庫
這位老哥在部落格中清楚的描述了應該如何操作,但是我需要在他的基礎之上簡化一下安裝,當你安裝完c語言的執行命令的時候就可以結束後續的步驟了,後面可以按照我的方法繼續配置 到了上面這一步就可以了,下面開始通過之前安裝的anaconda來幫你做後續的工作 為了便於操作,和簡化安裝流程,請先在系統中安裝an...
如何在jsp中引用標籤庫
如果你使用的是符合jsp 1.2 servlet 2.3 的容器,比如tomcat 4.x 或者更高,你就可以在jsp頁面的taglib指令中使用絕對路徑而不必在web.xml中指定taglib元素。對於早於servlet 2.3 規範的情況,你仍然需要在web.xml中宣告所有你所使用的jsp 標...
如何在網頁中引用CSS
如何在網頁中引用css?2006 11 21 17 42 如何在網頁中引用css?初學css的一般都對如何在網頁中使用css感到特別困惑,在這裡我把常用的方法介紹給大家,以解大家心頭之惑 1 使用embed 嵌入樣式單 排版樣式 即將css 直接插入每個頁面的html的 說明 css檔案的路徑用絕對...