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

oct*_*bus 5 python jvm clojure

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

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

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

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

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

鉴于这是Linux,我可能可以使用管道共享信息,但我特别想知道Python和Clojure是否支持可以促进程序间通信的模块.

谢谢.

Tim*_*dge 5

我不确定你的Clojure程序在做什么,但是如果你只是想从Python执行Clojure代码,那么Clojure-Py可能会有所帮助:

https://github.com/halgari/clojure-py

例如,您可以在Python中执行此操作:

>>> import clojure.core

>>> clojure.core.cons(1, None)
(1)
Run Code Online (Sandbox Code Playgroud)

免责声明,我是clojure-py的作者


mon*_*kut 0

我不熟悉 Clojure,但您可能可以使用 python subprocess模块将 json 通过管道传输给它。

import json
from subprocess import Popen, PIPE

json_data = json.dumps({"key":"value"})
p = subprocess.Popen("closure-execution", stdout=PIPE, stdin=PIPE, sterr=PIPE)
# stuff some data into the pipe and wait for the process to end:
stdout, sterr = p.communicate(json_data)
Run Code Online (Sandbox Code Playgroud)

或者类似的东西...