Python调用C库

Python调用C库

Python可以利用ctypes库很方便地调用C的库函数。 C库例程:

# file: a.c
int sum(int a, int b){
  int t = 0;
  int i = 0;
  for(; i < b;i++) t += a;
  return t;
}
shell> gcc -fPIC -g -c -Wall a.c && gcc -shared -Wl,-soname,liba.so -o liba.so a.o

  Python程序例程:

# file: a.py
import timeit
n=1000000
def s(a,b):
  t = 0
  for i in xrange(b):
    t += a
  return t
print s(10,100)
t = timeit.Timer("s(10,20)", "from __main__ import s")
print t.timeit(n)
del s
import ctypes
a = ctypes.cdll.LoadLibrary("./liba.so")
s = a.sum
print s(10,100)
t = timeit.Timer("s(10,20)", "from __main__ import s")
print t.timeit(n)

  运行比较:

shell> python2.6 a.py
1000
1.94600701332
1000
0.611714839935
时间: 2024-12-30 04:11:03

Python调用C库的相关文章

使用python调用zxing库生成二维码图片

(1)     安装Jpype 用python调用jar包须要安装jpype扩展,在Ubuntu上能够直接使用apt-get安装jpype扩展 $ sudo apt-get install python-jpype 关于使用Jpype调用jar包的方式.请看http://blog.csdn.net/niuyisheng/article/details/9002926 (2)     得到zxing  jar包 使用zxing第三方库生成二维码图片,关于zxing的介绍能够看其github地址:h

一个简单的C共享库的创建及python调用此库的方法

/*********************************************************************  * Author  : Samson  * Date    : 02/02/2015  * Test platform:  *              3.13.0-24-generic  *              GNU bash, 4.3.11(1)-release  * ************************************

Python 调用pyaudio库录制以及播放wav音频文件

1.Pyaudio简介 PyAudio 是语音处理的 Python 库,提供了比较丰富的功能. 2.功能 python的Pyaud模块可以调用电脑的麦克风或音响进行录音,音频播放,生成wav文件等. wave是录音是用的标准的WINDOWS文件格式,扩展名为WAV,数据本身的格式为PCM或压缩型,属于无损音乐格式的一种. 3.Pyaudio安装 pip install pyaudio 推荐使用清华源哦,速度快 pip install pyaudio -i https://pypi.tuna.ts

[Python] Python 调用 C 共享库

Linux/Unix 平台下共享库(Shared Library)文件后缀 .so:在 Windows 平台称为动态链接库(Dynamic Link Library),文件名后缀为 .dll. 利用 ctypes 模块调用 C 共享库 ctypes 是 Python 标准库提供的一个模块,Python 2.3 版本以上支持该模块.ctypes 是 Python 高级外部函数接口,Python 通过它可以调用 C 语言编译的静态链接库和动态链接库.ctypes 支持多个平台,包括 Windows,

python调用C/C++动态库

目录 1. 背景知识 1.1 动态链接库 1.2 extern "C"作用 1.3 动态链接库加载方式 1.3.1 隐式链接 1.3.2 显式链接 2. python操作动态库 2.1 加载动态库 2.2 指定函数命名 2.3 参数类型 2.3.1 值类型 2.3.2 指针类型 2.3.3 引用类型 2.3.4 结构体类型 本文以windows环境下的.dll动态链接库为背景展开,有关linux下的.so动态链接库的相关用法会在另外一篇文章中展开讲解. 1. 背景知识 一直以来pyth

Python调用C++

/***gcc -o libpycall.so -shared -fPIC pycall.c*/ #include <stdio.h> #include <stdlib.h> int foo(int a, int b) { printf("you input %d and %d\n", a, b); return a+b; } Python调用动态库的文件:pycall.py import ctypes ll = ctypes.cdll.LoadLibrary

python调用C动态链接库

Python调用C库比较简单,不经过任何封装打包成so,再使用python的ctypes调用即可. 1. C语言文件:pycall.c #include <stdio.h> #include <stdlib.h> int foo(int a, int b) { printf("you input %d and %d\n",a,b); return a+b; } 2. gcc编译成动态库libpycall.so: gcc -o libpycall.so -shar

利用Python 调用turtle函数库 绘制奥运五环。

import turtle #调用turtle库绘制图像的函数库turtle.color("blue") #颜色 蓝色turtle.circle(100) #画半径100的圆 turtle.penup() #抬起笔turtle.goto(-180,0) #移动到turtle.pendown() #放笔turtle.color("red") #颜色 红色turtle.circle(100) #画半径100的圆 turtle.penup() #提起笔turtle.got

python/c++接口库比较(SWIG,boost.python, pycxx, py++, sip, Weave, Pyrex )

<python/c++接口库比较(SWIG,boost.python, pycxx, py++, sip, Weave, Pyrex )>http://blog.csdn.net/lainegates/article/details/19565823 目前有很多开源的Python/c++ 绑定工具,搜了好多岾子,这里稍微总结下. SWIG 支持 Python 2 and 3 配置正确的话,可以全自动完成封装(*.i文件需要自己写) 当不是全自动的时候,它大多会重复你的.h文件并给出提示 除了P