C#与Python通信的最快方式是什么?
我需要一种方法,让C#能够和任意版本的Python进行交流。用户可以输入Python的路径,这样他们就可以选择自己想要的版本。我需要能够把一个字符串传给Python,然后再得到一个浮点数。这种操作需要进行几千次。目前我只是使用标准的输入输出,但感觉速度很慢。有没有更快的方法可以做到这一点?
2 个回答
0
使用 zmq
是非常快速的,它有适用于 C# 和 Python 的库,可以在网络上进行通信,在某些情况下比普通的 TCP 还要快。
比如,iPython 就是用它来进行内部组件之间的通信。
我在 StackOverflow 上的回答展示了一个通过 zmq 实现的 锁服务器,这个服务器也可以用来服务 C#。
5
通常,处理这种情况的“最佳”方法是使用IronPython,而不是让用户自己提供Python运行环境。
你也可以使用Python for .NET,但这样的话,你就会被限制在特定版本的Python上。
如果你能控制在Python中调用的内容,但又需要使用不同版本的Python,你可以考虑使用一种常见的消息服务。一个选择是通过管道设置一个进程间通信(IPC)通道,这在Python和.NET中都是支持的。这样可以实现快速的C#到Python再到C#的通信,同时保持进程的独立性。
如果你需要使用任意版本和安装的Python,那么通过shell进程执行和获取信息可能是唯一的选择。