我现在正在尝试预编译Julia模块,以便它可以更快地运行。但是,对我来说,在模块声明之前编写__precompile__()
似乎并没有在文件夹中生成任何缓存文件,这似乎很奇怪。
然后,我尝试使用以下步骤调用函数Base.compilecache
:
include("M.jl")
Base.compilecache("M")
然而,即使前两步完成没有问题,并且我实际上可以运行模块中定义的函数,第三步抱怨"错误:ArgumentError:M未在路径"中找到,我仍然无法为模块生成任何缓存。
我在这里做错了什么?
答案 0 :(得分:1)
编译模块在用户定义的位置生成,通常在linux ~/.julia/lib/v0.6/
中生成。我相信如果您查看那里,您会发现与您的模块的预编译版本对应的.ji
文件。删除一个并尝试在julia会话中再次导入以确认它将尝试重新预编译;如果是,则表示您的__precompile__()
指令正在运行。
此外,请注意push!
.jl
自定义模块的路径(即源代码.ji
部分,而不是预编译的LOAD_PATH
文件的路径)push!(LOAD_PATH, "./")
}(即~/.julia/v0.6/
)如果未在默认位置“安装”(通常为class IDeployer(abc.ABC):
@staticmethod
@abc.abstractmethod
def get_host_type():
raise NotImplementedError()
)。当您要导入模块时,Julia需要访问这两个模块。
(PS。如果更新模块,还应该看到预编译)