从Python调用C库

时间:2015-04-26 20:29:30

标签: python

我找到了一个C(?)中的库,我想从Python中尝试: https://github.com/centaurean/density

我想看看我是否可以将压缩文件存储在磁盘上并将其解压缩到内存中,以便更快地完整读取文件。

我是使用Python的外部代码的新手。如何创建一个使用此库的Python函数,并尽可能减少开销?

(我将使用Windows或Linux)

3 个答案:

答案 0 :(得分:2)

一种方法是将库编译成动态库(Windows上的.dll或Linux上的.so)并使用ctypes(https://docs.python.org/2/library/ctypes.html)来访问它。

答案 1 :(得分:1)

幸运的是,Python附带了一个名为ctypes的FFI内置程序。它适用于Linux和Windows,并且有很多教程可以学习如何使用它。

请注意,您需要事先将库编译为共享库(Windows中的DLL,Linux中的SO)。

答案 2 :(得分:1)

ctypes提供了一条通过FFI完成此操作的简单途径,可以选择使用类似SWIG的东西来连接更低层的python库。

我建议生成一个小的微基准程序来记录这样一个实验之前和之后的性能,这样你就可以选择具体的值来选择是否要长期运行ctypes或python-swig代码在python中本地执行某些操作,您可以在c-python或变体(例如pypy)中进行试用