Clojure和Python程序共享信息的最简单方式是什么?
我有两个问题,一个是另一个的子集 1) 在Python和Clojure程序之间传递信息的最佳方式是什么。这个问题也可以扩展到任何jvm语言,比如Scala。这些程序将在Linux下运行 2) 在Windows下执行此操作的最佳方法是什么 详情如下。我想要一个Python程序来启动Clojure程序,知道Clojure程序何时完成,并检索运行Clojure程序的结果 我知道,在Python和Clojure程序之间,信息可以在一个数据库表中共享,该数据库表是专门为在Clojure程序完成后存储信息而创建的,甚至可以做一些像将结果文件留在已知目录中这样笨重的事 考虑到这是Linux,我可能可以使用管道共享信息,但我特别想知道是否有Python和Clojure都支持的模块可以促进程序间通信Clojure和Python程序共享信息的最简单方式是什么?,python,clojure,jvm,Python,Clojure,Jvm,我有两个问题,一个是另一个的子集 1) 在Python和Clojure程序之间传递信息的最佳方式是什么。这个问题也可以扩展到任何jvm语言,比如Scala。这些程序将在Linux下运行 2) 在Windows下执行此操作的最佳方法是什么 详情如下。我想要一个Python程序来启动Clojure程序,知道Clojure程序何时完成,并检索运行Clojure程序的结果 我知道,在Python和Clojure程序之间,信息可以在一个数据库表中共享,该数据库表是专门为在Clojure程序完成后存储信息而
谢谢。我不熟悉Clojure,但您可能可以使用python模块将json传输到它
或者诸如此类的事情…我不确定您的Clojure程序正在做什么,但如果您只是想从Python执行Clojure代码,那么Clojure Py可能会有所帮助: 例如,您可以在Python中执行此操作:
>>> import clojure.core
>>> clojure.core.cons(1, None)
(1)
免责声明,我是clojure py的作者,一个选项是使用clojure在同一个JVM中运行Python代码,这样互操作就简单多了 在这种情况下,互操作也应该是独立于操作系统的,这是一个很好的好处 见:
- 另一种IPC方法是使用套接字。我在python上创建了一个非常简单的套接字服务器,它接受字符串并调用函数。然后,clojure实例可以连接到python服务器并将clojure表单作为数据发送。使用pyclj,使用pyclj
读取器
将clojure数据转换为python格式,然后对其进行处理,然后使用pyclj编写器
返回clojure数据。这种方法对clojure更加友好,因为您一直都在使用clojure数据。这还允许在python和clojure实例运行的地方具有更大的灵活性,并为异步通信提供了更好的接口
如果性能很重要,那么这是一个很好的选择。 使用Clojure的protobuf在本文中有很好的介绍
>>> import clojure.core
>>> clojure.core.cons(1, None)
(1)