bash - bash 脚本中的 Julia

标签 bash shell julia precompile load-time

我可以创建一个 Julia 实例并使用它从 bash 脚本运行多个 Julia 脚本吗?

#!/bin/bash
J=getjuliainstance()
J.run(temp.jl)
J.run(j1.jl)
J.run(j2.jl)
J.run(j3.jl)
J.exit()

我可以从 Julia 主脚本中运行所有这些,但这不是目的。

这是为了规避 Julia 第一个脚本的加载时间,以便后续脚本的运行时间可以一致地计时。

有什么方法可以生成单个进程并重用它来启动脚本吗?请仅使用 shell 脚本!

解决方案之一(允许使用 tail -f):

julia <pipe 2>&1 | tee submission.log > /dev/null &

最佳答案

您可以尝试命名管道:

$ mkfifo pipe # create named pipe

$ sleep 10000 > pipe & # keep pipe alive
[1] 11521

$ julia -i <pipe & # make Julia read from pipe
[2] 11546

$ echo "1+2" >pipe

$ 3


$ echo "rand(10)" >pipe

$ 10-element Array{Float64,1}:
 0.938396
 0.690747
 0.615235
 0.298277
 0.780966
 0.775423
 0.197329
 0.136582
 0.302169
 0.607562


$

您可以使用 echo 向 Julia 发送任何命令。 如果您使用 stdout 进行 Julia 输出,那么当 Julia 在那里写入内容时您必须按 Enter 键才能返回提示。 通过编写 echo "exit()">pipe 来停止 Julia。如果您想以这种方式执行文件,请使用 include 函数。

编辑:如果您以这种方式运行 Julia,似乎您甚至不必使用 -i

EDIT2:我没有注意到实际上您只想使用一个 bash 脚本(而不是交互模式)。在这种情况下,使用命名管道应该更简单。

关于bash - bash 脚本中的 Julia,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48476159/

相关文章:

bash - 使用 FS 时如何抑制 awk 输出?

bash - 自动 Bash 脚本

python - Julia 性能与 Python+Numba LLVM/JIT 编译代码的比较

centos - Julia + Centos - Arpack 无法构建

bash - 在 bash 中的自定义 getopts 脚本中将参数作为选项传递

linux - bash 脚本在失败时创建环回(使用对话框)

linux - 从 shell/bash 输出时髦的文件名?

bash - 使用 linux 'file' 命令确定类型(即图像、音频或视频)

python - Django shell 脚本定义错误

python - 根据 Julia 中的数据绘制 3D 曲面(使用绘图)