在Python和C之间实现回调
我用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 = "string1" txt_2 = "string2" result = 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呢?
2 个回答
0
这不是针对你问题的具体回答,但我这里有一个我问过的例子:swig-passing-argument-to-python-callback-function
希望这对你有帮助。
0
PyObject_Call*()
这个函数可以用来从C语言中调用Python的函数或者方法。