位置: 编程技术 - 正文
推荐整理分享利用ctypes提高Python的执行速度,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
前言
ctypes是Python的外部函数库。它提供了C兼容的数据类型,并且允许调用动态链接库/共享库中的函数。它可以将这些库包装起来给Python使用。这个引入C语言的接口可以帮助我们做很多事情,比如需要调用C代码的来提高性能的一些小型问题。通过它你可以接入Windows系统上的 kernel.dll 和 msvcrt.dll 动态链接库,以及Linux系统上的 libc.so.6 库。当然你也可以使用自己的编译好的共享库
我们先来看一个简单的例子 我们使用 Python 求 以内素数,重复这个过程次,并计算运行时间。
输出
下面用C语言写一个的 check_prime 函数,然后把它当作共享库(动态链接库)导入
使用以下命令生成 .so (shared object)文件
输出
我们可以看到很明显的性能差距 这里有更多的方法去判断一个数是否是素数
再来看一个复杂点的例子 快速排序
mylib.c
使用ctypes有一个麻烦点的地方是原生的C代码使用的类型可能跟Python不能明确的对应上来。比如这里什么是Python中的数组?列表?还是 array 模块中的一个数组。所以我们需要进行转换
test.py
输出
与Python list 的 sort 方法进行对比
输出
至于结构体,需要定义一个类,包含相应的字段和类型
除了导入我们自己写的C语言扩展文件,我们还可以直接导入系统提供的库文件,比如linux下c标准库的实现 glibc
输出
总结
上一篇:python实现批量监控网站(python批量ping)
下一篇:Python随机数random模块使用指南(python随机数random.choice)
友情链接: 武汉网站建设