Julia 模块不支持预编译,但由支持预编译的模块导入

Julia 模块不支持预编译,但由支持预编译的模块导入,julia,Julia,我正在Julia中使用pmap和分布式数组来并行化代码。当运行命令@everywhere include(“./code.jl”)时,会输出一长串警告消息,并且在这个过程中会消耗大量的时间。文件code.jl中的包是,例如: using DataFrames using Images 我不知道如何解决缓存中缺少的问题 这是正在运行的线路 @everywhere include("./code.jl") 我没想到会有一连串的抱怨。但是,所有工人的输出与此类似: From worker 2:

我正在Julia中使用
pmap
和分布式数组来并行化代码。当运行命令
@everywhere include(“./code.jl”)
时,会输出一长串警告消息,并且在这个过程中会消耗大量的时间。文件
code.jl
中的包是,例如:

using DataFrames
using Images
我不知道如何解决缓存中缺少
的问题

这是正在运行的线路

@everywhere include("./code.jl")
我没想到会有一连串的抱怨。但是,所有工人的输出与此类似:

From worker 2:  │ This may mean CategoricalArrays [324d7699-5711-5eae-9e2f-1d82baa6b597] does not support precompilation but is imported by a module that does.
      From worker 2:    └ @ Base loading.jl:947
      From worker 6:    ┌ Warning: Module CategoricalArrays with build ID 5344443537363826 is missing from the cache.
From worker 4:  ┌ Warning: Module DataFrames with build ID 5344463834994296 is missing from the cache.
      From worker 4:    │ This may mean DataFrames [a93c6f00-e57d-5684-b7b6-d8193f3e46c0] does not support precompilation but is imported by a module that does.
      From worker 4:    └ @ Base loading.jl:947
      From worker 2:    ┌ Warning: Module DataFrames with build ID 5344464953933087 is missing from the cache.
      From worker 2:    │ This may mean DataFrames [a93c6f00-e57d-5684-b7b6-d8193f3e46c0] does not support precompilation but is imported by a module that does.

您可能有一个需要重新编译的包,并且您将得到一个竞争条件,在该条件下,所有工作人员都决定他们需要独立地重新编译它。尝试启动单个julia会话并键入
]precompile
(进入pkg模式的
]
)。完成后,为了安全起见,您可以尝试使用数据帧
,以确保其正常工作。然后尝试上面的代码。

而@tholy答案是正确的-您需要记住在每次更新包时重新编译

对抗竞争条件的另一种方法是在本地导入包,而不是在分布式版本中导入包:

using DataFrames
@everywhere using DataFrames
假设您的文件只导入包和定义函数,您可以尝试:

include("./code.jl")
@everywhere include("./code.jl")

这应该会有所帮助,并且在更新应用程序使用的某些包时,不需要记住重新编译

是否每次调用程序时都需要执行此步骤?否,仅当包已更改时才执行。您认为该文件仅导入包(使用…)并定义函数的假设是正确的。即使按照您的处方操作,我仍然会收到一长串警告消息。您的代码是在一台机器上运行还是分发的?在具有多个处理器的单个节点上因此有两个问题:(1)当您运行
include(“./code.jl”)
时,还是仅当
@everywhere include(“./code.jl”)时,才有此列表
include(“./code.jl”)之后运行。
?(2) 您的代码是一个模块吗(如果是这样的话,您需要确保它也被编译),在这种情况下,分布式计算不是问题,而是包安装的问题。尝试删除
~/.julia
文件夹并重新安装软件包