我想从窗口命令行运行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的(,因此您还可以看看这个模块是如何实现的,以了解如何实现它。