【问题标题】:implementing callback between Python and C在 Python 和 C 之间实现回调
【发布时间】:2010-10-25 16:08:31
【问题描述】:

我使用 SWIG 包装了一些 C 代码,将其用作 python 库。

在这个框架内,我编写的一些 python 代码调用了一个 C 函数,它返回一个字符串。但是,为了创建字符串,C 函数需要一个排名,我已经在 Python 中实现了排名。我将如何使用回调来实现这一点?

我认为这是以下多步骤过程。

1) Python 实例化一个 C 对象: import test_Objects #test_Objects 是已经打包好的C文件 C = test_objects.my_class()

2) 调用 my_class 对象的相关方法,返回一个字符串: txt_1 = "字符串 1" txt_2 - “字符串 2” 结果 = C.sorted_string(txt_1, txt_2)

2.1) 我希望 sorted_string 调用以下 python 函数,该函数返回一个排序列表。

   def sorted_string([my_list]):
       .....
       .....
       return your_list

2.2) Sorted_string 将利用列表来生成结果。

我将如何实施步骤 2.1?

【问题讨论】:

    标签: python c callback swig


    【解决方案1】:

    PyObject_Call*() 函数可用于从 C 调用 Python 函数或方法。

    【讨论】:

    • 谢谢。关于如何通过 swig 实现这一点的任何想法?
    • 不。但是一旦得到一个函数对象,一切就结束了。
    【解决方案2】:

    这不是针对您的问题,但这是我问的一个示例:swig-passing-argument-to-python-callback-function

    希望这有帮助。

    【讨论】:

    • joon:我早些时候看到了你的帖子,这就是促使我提出问题的原因。我看到 callback.c 和 callback.i。您能否给我一个指向包含 callback.c 调用的函数的 .py 文件(您编写的文件,而不是 SWIG 生成的文件)的指针?另外,我注意到您没有 callback.h 文件? SWIG 不需要吗?
    猜你喜欢
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 2021-05-25
    相关资源
    最近更新 更多