解密 Python 如何调用 Rust 编译生成的动态链接库( 八 )

成功实现了向 Rust 传递回调函数,当然例子举得有点刻意了,比如参数类型指定为 i32 即可 , 没有必要使用指针 。
 小结以上我们就介绍了 Python 如何调用 Rust 编译的动态库,再次强调一下,通过 ctypes 调用动态库是最方便、最简单的方式 。它和 Python 的版本无关,也不涉及底层的 C 扩展,它只是将 Rust 编译成 C ABI 兼容的动态库,然后交给 Python 进行调用 。
因此这也侧面要求 , 函数的参数和返回值的类型应该是 C 可以表示的类型,比如 Rust 函数不能返回一个 trAIt 对象 。总之在调用动态库的时候,库函数内部的逻辑可以很复杂,但是参数和返回值最好要简单 。
如果你发现 Python 代码存在大量的 CPU 密集型计算,并且不怎么涉及复杂的 Python 数据结构,那么不妨将这些计算交给 Rust 。
以上就是本文的内容,后续有空我们介绍如何用 Rust 的 PyO3 来为 Python 编写扩展 。PyO3 的定位类似于 Cython,用它来写扩展非常的方便 , 后续有机会我们详细聊一聊 。

【解密 Python 如何调用 Rust 编译生成的动态链接库】


推荐阅读