Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure和Python程序共享信息的最简单方式是什么?_Python_Clojure_Jvm - Fatal编程技术网

Clojure和Python程序共享信息的最简单方式是什么?

Clojure和Python程序共享信息的最简单方式是什么?,python,clojure,jvm,Python,Clojure,Jvm,我有两个问题,一个是另一个的子集 1) 在Python和Clojure程序之间传递信息的最佳方式是什么。这个问题也可以扩展到任何jvm语言,比如Scala。这些程序将在Linux下运行 2) 在Windows下执行此操作的最佳方法是什么 详情如下。我想要一个Python程序来启动Clojure程序,知道Clojure程序何时完成,并检索运行Clojure程序的结果 我知道,在Python和Clojure程序之间,信息可以在一个数据库表中共享,该数据库表是专门为在Clojure程序完成后存储信息而

我有两个问题,一个是另一个的子集

1) 在Python和Clojure程序之间传递信息的最佳方式是什么。这个问题也可以扩展到任何jvm语言,比如Scala。这些程序将在Linux下运行

2) 在Windows下执行此操作的最佳方法是什么

详情如下。我想要一个Python程序来启动Clojure程序,知道Clojure程序何时完成,并检索运行Clojure程序的结果

我知道,在Python和Clojure程序之间,信息可以在一个数据库表中共享,该数据库表是专门为在Clojure程序完成后存储信息而创建的,甚至可以做一些像将结果文件留在已知目录中这样笨重的事

考虑到这是Linux,我可能可以使用管道共享信息,但我特别想知道是否有Python和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)