如何在 python 中保存 C++ 指针以便稍后再次传递?
How save a C++ pointer in python to pass it again later?
我正在尝试创建一些东西,但我不知道它是否可行或是否“干净”:
- 从 python 开始,调用我的 C++ 代码的函数 A 来计算一些复杂的东西
- C++代码returns只是指向python
的指针
- 在python中做其他事情...
- 从python开始,调用我的C++代码的函数B,它以指针和其他东西作为参数。
我真的不需要在我的 Python 算法中使用我复杂的 C++ class,这就是为什么我只想将指针保存在 python.
有人对如何做到这一点有任何建议吗?
编辑:最后我把c++ class包在了python,谢谢大家。
指针只是可以编组并发送到任何地方的数据。然而,这是一个非常糟糕的主意,因为这样做时,您必须确保只要 python 部分具有指针,该指针就保持有效。无法检查指针是否仍然有效,因此取消引用从外部接收的指针可能会使程序崩溃。
在很多情况下,更好的办法是将密钥发送给 table。当该密钥被发回时,它可用于从 table 获取所需的信息,并且当 table 不再拥有密钥时可以处理它。对于table,使用std::map
是最简单的。当然,您可以将指针存储在容器中并进行检查,但字符串或数字更容易调试。
最好在 C++ 中创建一个 class 并将该指针作为私有指针存储在 class 本身中。然后创建函数调用以访问这些指针。
实施 class 后,生成您的库的 .so 文件并将其导入 python。这样你就可以简单地在 python 中使用你的 C++ 代码,也不必保存指针。
我正在尝试创建一些东西,但我不知道它是否可行或是否“干净”:
- 从 python 开始,调用我的 C++ 代码的函数 A 来计算一些复杂的东西
- C++代码returns只是指向python 的指针
- 在python中做其他事情...
- 从python开始,调用我的C++代码的函数B,它以指针和其他东西作为参数。
我真的不需要在我的 Python 算法中使用我复杂的 C++ class,这就是为什么我只想将指针保存在 python.
有人对如何做到这一点有任何建议吗?
编辑:最后我把c++ class包在了python,谢谢大家。
指针只是可以编组并发送到任何地方的数据。然而,这是一个非常糟糕的主意,因为这样做时,您必须确保只要 python 部分具有指针,该指针就保持有效。无法检查指针是否仍然有效,因此取消引用从外部接收的指针可能会使程序崩溃。
在很多情况下,更好的办法是将密钥发送给 table。当该密钥被发回时,它可用于从 table 获取所需的信息,并且当 table 不再拥有密钥时可以处理它。对于table,使用std::map
是最简单的。当然,您可以将指针存储在容器中并进行检查,但字符串或数字更容易调试。
最好在 C++ 中创建一个 class 并将该指针作为私有指针存储在 class 本身中。然后创建函数调用以访问这些指针。
实施 class 后,生成您的库的 .so 文件并将其导入 python。这样你就可以简单地在 python 中使用你的 C++ 代码,也不必保存指针。