编译c语言源文件为python ctypes可调用的so库文件提高python性能(实例讲解)

作者: 杨圣亮 分类: python编程 发布时间: 2017-04-08 08:44:55

众所周知的真理—python性能差c语言一大截,为了弥补这个缺陷,一方面python提供了多进程(multiprocessing),并且还提供了ctypes库,该库可调用gcc 编译c语言生成的.so库文件,从而得到python性能的提升。

.so文件的编译确实费了不少力气,主要是对gcc编译知识的缺乏,网上的资料大多抄袭,源头错了,下游全部都是错的,在不断地百度之后,发现了一个可以用来编译.so的方法,特记录下来。 例:c源程序为 getSum.c,则有:

gcc -shared -fPIC -DPIC getSum.c -o getSum.so

即可以将c源文件编译成可供python调用的so库文件,赶紧来享受c带来的性能飚升的体验吧,ps:对ctypes不是很了解,正在学习中,又重新燃起对c语言学习的激情了。

注:此编译仅限linux,测试机为debian8.7 ,python2,python3皆能用,windows下未做测试,日后补充上来。

一个例子:

getSum.c

#include <stdio.h>

int getSum()
{
	int sum = 0;
    int a,b;
    for(a=0;a<=100;a++)
		{
			sum += a;
		}
    return sum;
}

编译.so库文件

gcc -shared -fPIC -DPIC getSum.c -o getSum.so

ctypedemo.py文件调用

# -*- coding: utf-8 -*-

from ctypes import CDLL

lib = CDLL("./getSum.so")
print(lib.getSum())

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

15  −  9  =  

微信