擅长:python、mysql、java
<p>在健壮性方面,我仍然认为swig比ctypes有一定的优越性,因为它可以让C编译器为您更彻底地检查事情;但是,这现在还没有什么意义(尽管它在前面的ctypes版本中显得更大了),这要感谢前面提到的<code>argtypes</code>特性@Mark。然而,毫无疑问,对于ctypes来说,运行时开销比swig(以及sip和boostpython以及其他“包装”方法)更重要:因此,我认为ctypes是在调用发生在关键瓶颈之外时访问DLL中的几个函数的一种方便方法,而不是使大型C库可用于性能危急情况下的Python。在</p>
<p>为了在swig&c的运行时性能和ctypes的便利性之间找到一个很好的中间方法,同时还可以添加更多的代码,这些代码可以使用Python语法的子集,但运行速度仅为c代码的速度,还要考虑<a href="http://cython.org/" rel="noreferrer">Cython</a>——一种类似python的语言,可以编译成C语言,专门用于编写python可调用扩展和包装C库(包括那些可能仅作为静态库而不是DLL提供的扩展):ctypes不允许您使用那些<em>那些</em>;-)。在</p>