我创建了一个用python编写的系统,它提供了各种硬件控制、数据采集和处理功能。我希望这个系统可以从Python或其他语言编写的程序访问,如Lua、Matlab、八度、C++和其他可能的。此外,这些程序可以在该计算机上运行,也可以在通过网络连接的另一台计算机上运行。
我知道存在各种类似python的rpc库
https://pypi.org/project/simple-rpc/ (不提供与多种语言的轻松接口)
冰https://zeroc.com/products/ice (对于我的简单应用程序来说太大了)
是否有任何简单轻量级的解决方案可以从其他语言编写的程序中远程调用python函数?
1条答案
按热度按时间vltsax251#
我在2012年开发了一个类似的系统,python函数的参数和返回值通过messagepack传递。这样的解决方案可以与用各种语言编写的程序进行通信。它是在usenet alt.sources组中发布的https://groups.google.com/g/alt.sources/c/qaspxjkkius (也可在funet存档中获得)http://ftp.funet.fi/pub/archive/alt.sources/2722.gz ). 现在我用zeromq库对其进行了补充,该库提供了与运行在同一台机器或远程机器上的程序的有效通信。
系统的核心是用python编写的服务器:
服务器可以发布具有不同参数的不同函数。这些参数可以作为位置参数(然后它们应该以元组的形式传递)或关键字参数(然后它们应该作为Map/字典传递)。
下面给出了使用这些函数的python客户端示例:
以下是用其他语言编写的客户端。
在卢阿:
八度
最后在C++中
上面的C++代码必须用
-fconcepts-ts
选项,例如,如下所示:解决方案实际上是最小的。github存储库中提供了维护的版本:https://gitlab.com/wzab/python-versatile-rpc