python - Ctypes 优缺点

标签 python winapi ctypes

我听说 Ctypes 会导致 Python 和 Windows 崩溃(或停止错误)。我应该远离他们的使用吗?我从哪里听到的?当我试图控制窗口的各个方面、自动化之类的东西时,它又回来了。

我听说过 swig,但我经常看到 Ctypes。这里有什么危险吗?如果是,我应该注意什么?

我确实搜索了 ctype pro con python。

最佳答案

就健壮性而言,我仍然认为 swig 优于 ctypes,因为可以让 C 编译器为您更彻底地检查;然而,由于 @Mark 已经提到的 argtypes 功能,这现在还没有实际意义(虽然它在早期的 ctypes 版本中显得更大)。然而,毫无疑问,ctypes 的运行时开销比 swig(以及 sip 和 boost python 和其他“包装”方法)要重要得多:所以,我认为 ctypes 是一种方便的方式来实现内部的一些功能当调用发生在关键瓶颈之外时的 DLL,而不是作为在性能关键情况下使大型 C 库可用于 Python 的一种方式。

对于 swig (&c) 的运行时性能和 ctypes 的便利性之间的一个很好的中间方法,还有一个额外的好处,即能够添加更多的代码,这些代码可以使用 Python 语法的一个子集,但运行在几乎 C 代码上速度,也考虑Cython -- 一种类似 python 的语言,可编译为 C,专门用于编写 Python 可调用的扩展和包装 C 库(包括那些可能仅作为静态库可用,而不是 DLL 的库:ctypes 不会让你玩 那些;-).

关于python - Ctypes 优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1318736/

相关文章:

python - 如何用 numpy 计算统计信息 "t-test"

带有 DLL 的 Python ctypes 参数 - 指向 double 组的指针

python - 使用 Python 中已安装的 libsqlite3 版本

c++ - Winapi-将LPWCSTR传递为LPCSTR

c++ - 将文本从子 GUI 进程发送到控制台父进程的最简单方法是什么?

c++ - 了解从 TranslateMessage() 发送的字符消息顺序

python - 如何检查python中的指针是否为空?

python - 在python中添加动态表名

python - python浮点值和c浮点值有什么区别?

python - 用不同的颜色为一条线设置动画