Python lambda in C++

Python lambda in C++

本文关键字:C++ in lambda Python      更新时间:2023-10-16

我有一个Python程序,其中有一个函数应该能够接受Python lambda,然后传递给正在运行的c++程序。

我想用泡菜。转储以将lambda序列化为字符串。然后将字符串传递给c++程序,然后使用boost进行反序列化。并在c++中获取lambda。然而,我刚刚意识到函数不能被pickle。

我相信应该有我不知道的现有解决方案。提前感谢任何建议!

查看C API教程页面。这个链接是关于从C调用Python函数的部分。听起来你对C API很陌生,所以从顶部开始吧。

Python不区分各种类型的可调用对象。就C API而言,具有__call__方法的函数,lambdas,对象是可互换的。

我不会复制/粘贴这里的所有内容,因为它在链接中写得很好,但基本上你用C(或c++, API在两者中都有效)制作Python模块。第一个示例向您展示了如何操作。然后你可以从Python中调用一个C函数,并向它传递你需要传递的任何信息。所有Python对象都通过PyObject*指针暴露给C语言,C API提供了许多函数来操作这些对象,在C语言数据类型之间进行转换,以及调用可调用对象等。

包装器,如boost。python和SWIG在内部使用这个API