Julia从命令行调用现有REPL上的脚本



我想从窗口命令行运行Julia脚本,但似乎每次运行> Julia code.jl时,都会创建一个新的Julia实例,并且启动时间(加载包、编译?(相当长。

有没有办法通过在当前REPL/Julia实例上运行脚本来跳过这个启动时间?(这通常为我节省50%的运行时间(。

我使用的是Julia 1.0。

谢谢你,

您可以使用include:

julia> include("code.jl")

有几种可能的解决方案。所有这些都涉及向正在运行的Julia会话发送命令的不同方式。我首先想到的是:

  • 按照中的说明使用套接字https://docs.julialang.org/en/v1/manual/networking-and-streams/#A-简单-TCP-示例-1
  • 设置HTTP服务器,例如使用https://github.com/JuliaWeb/HTTP.jl
  • 使用命名管道,如bash中的"命名管道不等待完成"中所述
  • 例如,通过文件系统进行通信(例如,让Julia扫描某个文件夹中的.jl文件,如果发现它们,就会执行并移动到另一个文件夹或删除(-这可能是最简单的正确实现方式

在所有的解决方案中,您可以通过执行一些shell命令将命令发送给Julia。

无论您喜欢哪种方法,关键的挑战都是净化代码以正确处理错误(即,当您向Julia会话发送一些命令时,会话崩溃,或者当您发送请求的速度超过Julia处理它们的速度时(。如果您希望Julia服务器与终端分离,这一点尤为重要。

顺便说一句:当在Julia中使用stdlib中的分布式模块进行多处理时,您实际上做了一件非常相似的事情(但通信是Julia到Julia的(,因此您还可以看看这个模块是如何实现的,以了解如何实现它。

最新更新