C代码
文件名 《task.c》
# include<stdio.h>
int task(){
int i,j,k;
unsigned long s = 0;
for(i=0;i<1000;i++){
for(j=0;j<1000;j++){
for(k=0;k<1000;k++) {
s = s + i + j + k;
}
}
}
return s;
}
编译 在task.c文件目录上打开命令行
gcc -o task.dll -shared -fPIC task.c
或
gcc -o task.so -shared -fPIC task.c
python 代码
from ctypes import cdll, c_long
from time import time
start = time()
dll = cdll.LoadLibrary('./task.so')
dll.task.restype = c_long
r = dll.task()
end = time()
print("c, so: time:{time},result:{r}".format(time=end - start, r=r))
start = time()
dll = cdll.LoadLibrary('./task.dll')
dll.task.restype = c_long
r = dll.task()
end = time()
print("c, dll: time:{time},result:{r}".format(time=end - start, r=r))
start = time()
def task():
s = 0
for i in range(1000):
for j in range(1000):
for k in range(1000):
s = s + i + j + k
pass
pass
pass
return s
r = task()
end = time()
print("c, py: time:{time},result:{r}".format(time=end - start, r=r))
结果
c, so: time:1.400615930557251,result:1498500000000
c, dll: time:1.2574799060821533,result:1498500000000
c, py: time:56.563599824905396,result:1498500000000