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