Python最慢!C最快!Python+C混编?结果可想而知!

Python+C混编-LMLPHP

樱桃种子

百家号04-1712:11
Python+C混编-LMLPHP
Python+C混编-LMLPHP

共享库

使用C语言编译产生共享库,然后python使用ctype库里的cdll来打开共享库。

举例如下,C语言代码为

Python+C混编-LMLPHP
Python+C混编-LMLPHP

python代码为

Python+C混编-LMLPHP

测试如下

Python+C混编-LMLPHP
Python+C混编-LMLPHP
Python+C混编-LMLPHP

Python代码为

Python+C混编-LMLPHP

测试如下

1

2

3

$ gcc test.c -o a.out

$ ./test_subprocess.py

9801

Python+C混编-LMLPHP
Python+C混编-LMLPHP

C语言代码如下

Python+C混编-LMLPHP

测试如下

1

2

3

$ gcc test.c

$ ./a.out

9801

Python+C混编-LMLPHP
Python+C混编-LMLPHP

为了说明如何扩展,我这里先假设一个在python下的函数功能,代码如下

Python+C混编-LMLPHP

如上,希望的函数功能是,参数是任意多个数字组成的列表(姑且排除其他数据结构),返回每个列表的元素之和的乘积。

姑且先把python代码写了,如下所示

Python+C混编-LMLPHP

带上之前一直测试的平方func,这个实现相对简单,希望python写出来的func可以和C语言扩展出来的结果一致。

先用C语言写上这些函数的实现,其中func3用上了一个表示任意多个任意长的数组的数据结构y_t,而x_t用来表示单个数组。

Python+C混编-LMLPHP
Python+C混编-LMLPHP
Python+C混编-LMLPHP
Python+C混编-LMLPHP
Python+C混编-LMLPHP
05-28 12:14