您如何从C代码调用Python代码?
问题内容:
我想用一个新功能扩展一个大型C项目,但是我真的想用Python编写它。基本上,我想从C代码调用Python代码。但是,像SWIG这样的Python->
C包装程序允许使用OPPOSITE,即编写C模块并从Python调用C。
我正在考虑一种涉及IPC或RPC的方法(我不介意拥有多个进程);也就是说,让我的纯Python组件在单独的进程中(在同一台机器上)运行,并让我的C项目通过套接字(或unix管道)的写入/读取与之通信。我的python组件可以读取/写入套接字进行通信。那是一个合理的方法吗?有更好的东西吗?喜欢一些特殊的RPC机制吗?
到目前为止 , 谢谢您的回答- 但是,我想专注于基于IPC的方法,因为我希望将Python程序与C程序放在一个单独的进程中。
我不想嵌入Python解释器。谢谢!
问题答案:
我推荐这里详细介绍的方法。首先说明如何执行Python代码的字符串,然后详细说明如何设置Python环境以与C程序交互,从C代码调用Python函数,从C代码操作Python对象,等等。
编辑
:如果您真的想走IPC的路线,那么您将要使用struct模块或更好的protlib。Python和C进程之间的大多数通信都围绕通过套接字或共享内存来回传递结构。
我建议Command
使用字段和代码创建结构以表示命令及其参数。在不了解您要完成的工作之前,我无法给出更多具体的建议,但是总的来说,我建议使用protlib库,因为它是我用来在C和Python程序之间进行通信的内容(免责声明:我是protlib的作者)
。