C語言擴充套件Python

2021-06-11 04:43:37 字數 4313 閱讀 6819

python具有很好的開發靈活性,最大的特點是c語言可以對python進行擴充套件,目前工作中正在進行相關的開發,第一篇文章作為基礎.

實現c函式,用python api封裝,實現倆個功能,1.say_hello,列印hello world! 2.calc_pv,做加法用算.

以下為使用方法:

01python2.7.3(default, nov132012,11:17:50)

02[gcc4.1.220080704(red hat4.1.2-48)] on linux2

03type"help",,"credits"or"license"formore information.

04>>>

05>>>importsession

06>>>

07>>> session.sayhello()

08hello world!

09>>> session.sum(1,2)

103

11>>>

以下為實現的步驟,核心的地方在**裡加了注釋.

01/**

02*

03*  $ cpython_eg1.c version1.0 2012-11-13 *** $

04*  @2012 ***.com.cn

05*

06*/

07

08#include "python.h"

09

10staticpyobject *say_hello(pyobject *self)

11

16

17staticpyobject *calc_pv(pyobject *self,pyobject *args)

18

30

31/*

32* function table

33* pymethoddef結構體定義:

34* struct pymethoddef ;

41*

42*/

43

44staticpymethoddef addmethods =

45,

48// meth_varargs 帶有引數

49,

50/**null代表結束位,py_initmodule會以null代表函式列表結束*/

51

52};

53

54/*

55* initialize

56*

57* 如果定義模組名字為session,必須要有initsession(void)函式作為動態介面

58* python會自動尋找介面呼叫

59*/

60

61pymodinit_func initsession(void)

62

最後是編譯的過程,首先建立setup.py,內容如下

1fromdistutils.coreimportsetup, extension

2

3module1=extension('session',sources=['cpython_eg1.c'],language='c')

4

5setup (name='emar_py_lib', version='1.0', \

6description='this is a demo package', \

7ext_modules=[module1])

編譯過程為:

1.python setup.py build

2.sudo python setup.py install

使用c語言擴充套件python

背景 我們工作中可能有時需要和第三方對接,而第三方提供的sdk可能是c語言或者c 編寫的,而我們程式使用的語言是python,這時候就需要使用python呼叫c庫 參考官方文件 編寫python擴充套件分三步 第一步 建立應用 使用c語言編寫具體的功能 如果sdk已經提供了並且不需要我們整合,則跳過...

使用C語言擴充套件Python 四

首先,遵循 測試先行 的原則,先來看我們改造後的python這一端,你可以每次讀取音訊原始檔的乙個資料塊,將其轉遞給encoder物件的encode方法,這樣無論你的原始檔是何種格式,你都可以在encoder中進行自由的控制,示例 如下 import clame inbufsize 4096 if ...

使用C語言擴充套件Python 四

首先,遵循 測試先行 的原則,先來看我們改造後的python這一端,你可以每次讀取音訊原始檔的乙個資料塊,將其轉遞給encoder物件的encode方法,這樣無論你的原始檔是何種格式,你都可以在encoder中進行自由的控制,示例 如下 import clame inbufsize 4096 if ...