gpt4 book ai didi

python - python 鸡 : Extending python with the use of a shared library

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:15 25 4
gpt4 key购买 nike

我读到可以通过编写 共享库 来扩展 Python,Python 解释器可以将其加载为 import 语句的一部分。

谁能给我指出一个简单的示例或教程,其中通过使用 Chicken Scheme 而不是 C/C++ 来完成这样的努力?据说 Chicken 可以生成“便携高效的 C”——因此它应该适合这样的任务,不是吗?

干杯!

最佳答案

这是一个有趣的问题。您的建议看起来是个好主意,但我认为以前没有人尝试过并开始编写教程。有一个从chicken scheme调用python的接口(interface),见pyffi ,这看起来像是 python C 接口(interface)的包装器。 Pyffi 不允许按照问题中的要求在另一个方向进行调用。

在 C 中为 python 创建模块涉及使用大量 python API 来操作 python 对象,因为 python 是动态类型的,所有基于 C 代码的参数都是 PyObject 类型,这适用于构建在类型、用户定义的类型和集合中。然后 C API 提供函数来操作这些对象、执行算术运算、将它们添加到集合中和从集合中取出等等。此外,必须对所有 pyObject 执行手动引用计数,以确保可以进行垃圾回收在python中正确执行。可以看到这方面的文档here .

可以在 C 代码中将 PyObject 转换为 C 类型,如 int、double 等,如果函数很大或 native ,这可以使编写模块更容易正在使用 C 集合。然后必须将输出包装回 PyObject 以将数据返回给 python 代码。

在 chicken 中创建 python 模块可能比 C 容易得多,因为两者都是动态类型语言,无需显式操作 PyObjects,还有创建高效 C 代码的额外好处。看起来 pyffi 已经在映射类型方面取得了一些进展,尽管需要进一步的工作才能允许它编写模块。

关于python - python 鸡 : Extending python with the use of a shared library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19849048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com