在同一机器上C#和Python应用的通信

1 投票
1 回答
1421 浏览
提问于 2025-04-17 13:09

我们正在做一个项目,需要和一组特定的硬件进行连接。其中一组硬件可以很简单地用C#来控制,而另一组则是用Python编程的。项目的一部分是让用Python控制的硬件和用C#控制的硬件进行通信,但由于时间紧迫,我们无法为另一组硬件开发C#或Python的软件。

用Python控制的硬件是完全基于事件的,也就是说,我们可以编写一些函数,当硬件满足特定条件时,这些函数就会被调用。我们的想法是修改控制另一组硬件的C#应用程序,让它来运行Python应用程序(可以使用类似Application.Run()的方式),然后编写Python函数,将相关数据传递给C#应用程序,当硬件发生事件时。

我们考虑使用套接字连接来处理这两个程序之间的通信,因为C#和Python都可以通过这种方式比较简单地实现(我们的Python开发者是这么说的)。我们最大的担忧是,两个程序都在同一台机器上运行,会不会出现什么问题。如果没有问题,我们可能会使用像0MQ这样的共享库。

我们还研究了一些其他的方案:

  • 管道 / 命名管道
  • 消息队列
  • 共享内存

基本上,我们想知道这些方法(或者其他方法)中,哪种在这两种语言中实现起来最简单,哪种性能最好。我们只关心数据的速度准确性(比如,如果使用网络数据包,尽量减少丢包)。安全性不是我们的关注点。

理想情况下,应该有一个数据流从Python应用程序到C#应用程序,还有两个数据流从C#应用程序到Python应用程序。主机将运行Windows 7。如果需要,我可以提供更多信息。

1 个回答

1

一个选择是试试 IronPython。因为IronPython是一个.NET语言,所以和C#代码交流应该很简单。

看看把你现有的Python代码在IronPython上运行会有多难,似乎是个值得研究的事情。

撰写回答