Clojure 创建 python 运行时并执行任务

Clojure create python runtime and execute task

我想用 Clojure 编写一个程序,它具有 Python 运行时并采用 Python 函数代码,以及来自某些客户端通过套接字传递给该函数的参数列表,然后它添加这个函数到运行时,用参数调用它,returns结果给客户端。

我想知道如何:

  1. 在 Clojure 中创建 Python 运行时
  2. 在此运行时发送代码并在 Clojure 中获取结果

您可以为此使用 clojure.java.shell

(ns tst.clj.core
  (:require [clojure.java.shell :as shell]  ))
(t/refer-tupelo)
(t/print-versions)

(println (shell/sh "python" "-c" "print (2 + 3)" ))

;=> {:exit 0, :out "5\n", :err ""}

更新

如果你担心启动的开销 Python,好像只有 6 ms 左右:

(time
  (let [sum-vec (for [i (range 100)]
                  (Integer/parseInt (str/trim (:out (shell/sh "python" "-c" (format "print (%d + 3)" i))))))
        cumsum  (reduce + sum-vec)
        ]
    (println :cumsum cumsum)))

;=> :cumsum 5250
;=> "Elapsed time: 638.612278 msecs"