我需要一种方法让c#与任意版本的Python进行通信。用户传递Python的路径,因此他们可以选择他们想要的任何版本。我需要能够将一个字符串传递给Python,并获得一个浮点数。这需要发生几千次。现在我只是使用标准输入/输出,但它似乎非常慢。有没有更快的方法呢?
答案 0 :(得分:5)
通常,"最佳"处理这种情况的方法是使用IronPython而不是让用户提供自己的Python运行时。
您也可以使用Python for .NET,但这会再次将您绑定到特定版本的Python。
如果您控制在Python中调用的内容,但需要任意版本的python,则可以使用通用消息传递服务。一种选择是通过管道设置IPC通道,这些管道在Python和.NET中受支持。这将提供快速的C# - > Python-> C#通信,同时保持流程分离。
如果你需要python的任意版本和安装,那么通过shell进程执行和获取信息可能是唯一的选择。
答案 1 :(得分:0)
使用zmq
的速度非常快,C#和Python都可以使用库,可以通过网络进行通信,在某些情况下比普通的TCP更快。
E.g。 iPyhton正在将其用于内部组件间通信。
我的StackOverflow答案显示Lock server implemented over zmq,也可以用来为C#提供服务。