双向通信Python和c++
Two way communication Python and C++
是否有可能有一个c++ dll调用Python脚本,同时,在c++ dll中有一个Python脚本调用函数,首先创建Python实例?
我可以使用哪个库?如果没有,有没有最佳实践?使用共享内存进行通信是最好的还是我应该使用某种能够进行操作的服务?
我的目标平台是Windows
您可以使用ctypes
模块在Python中使用C/c++编写的外部库。但是要注意c++混淆了函数名,并且ctypes只能使用声明为extern "C"
的函数!(参见这个问题)
从c++调用Python脚本有两个选择:
- 以脚本名作为参数启动一个新的Python进程。在windows上,你可以使用CreateProcess。
- 在c++应用中嵌入Python,就像Janne Karila提到的。
请注意,这些事情与程序之间的通信没有多大关系。
库并没有真正的通信,因为它不是一个进程。它只是为进程使用提供函数和数据。
你可以从另一个进程中启动一个进程,而不需要它们之间的任何通信。
要在进程之间通信,使用进程间通信。这里列出了Windows上的不同方法。
相关文章:
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- 如何在c++中使用引用实现类似python的行为
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 递归列出所有目录中的C++与Python与Ruby的性能
- IPC使用多个管道和分支进程来运行Python程序
- 从python中调用C++函数并获取返回值
- Python 3.7 和 excess_args 的 SWIG 问题
- Python中的for循环与C++有何不同
- 使用Pybind11向Python公开Eigen::张量
- Python str to C++ to Python str
- 如何使用Python从C++中读取谷物序列化数据
- 如何在C++中使用pybind11加载一个pickle python列表
- 如何在c++中使用system()来运行包含空格的python脚本
- python集合的C++等价物是什么.计数器
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 从python调用openMP共享库时,未定义opnMP函数
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 如何将真正的字符串从python c-api转换为python脚本
- Python ctype 'c_char_p' Memory Leak