编译c语言源文件为python ctypes可调用的so库文件提高python性能(实例讲解)
众所周知的真理—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())
更多阅读