通过C++桥接从.NET调用Python

2024-04-25 23:18:07 发布

您现在位置:Python中文网/ 问答频道 /正文

每隔两个月,当我太累了,不能重新发明/移植一些东西并在Python中找到一些很酷的代码时,我会在google上搜索“callpython from.NET”。两种流行的解决方案是启动外部进程或使用IronPython

IronPython不是我的选择,因为我想使用Python的原因通常是一些依赖于NumPy/ScyPy的库。在

最近我开始学习C++的基础知识,发现可以在C++中嵌入Python,并且找到了一个article with an example。在

通过.p/援引,很容易从.NET调用C++。所以我的场景是用.NET中的数据调用一些Python脚本并返回结果。在

在我开始深入研究之前,我想问一下是否有人尝试过这种方法,这是可行的还是有更好的方法?在

具体来说

  • 所有Python库在嵌入时都能工作吗,例如NumPy、ScyPy、Pandas、PyMC等等。?在
  • 嵌入式Python是否与C++标准一样使用C++/CLI?在
  • 如何将复杂数据传递给Python:序列化为JSON还是类型之间有映射?在

性能是一个问题:主要用例是在实时数据的滑动窗口上做一些数值工作。我觉得经常打电话的外部流程很慢-如果我错了请纠正我?在


Tags: 数据方法代码fromnumpynet进程google
2条回答

我在下面用过一次方式:-在

有一个C#dll,我需要从中查询数据。因此,我开发了C++/CLI模块,与DLL交互,并处理了与该数据对应的一些委托和事件。然后C++模块接受该数据,处理它并将其发送到Python模块。在

python和c++之间的差距是用zmq(替换普通套接字)和googleprotocolbuffers(序列化和反序列化机制)来填补的。Python所做的就是向C++发送请求,然后将其传递给C++/CLI模块,在获取数据时,它会推动ZMQ到Python…在

考虑在一个单独的线程中生成一个python实例作为一个处理服务器-您可以使用消息将数据传递给它并从中返回,如果耦合松散,这可能比外部调用工作得好得多,这意味着您的数字处理在GUI的单独核心上。您还将跳过为每个调用加载新进程所固有的处理时间。在

相关问题 更多 >