我写了一个带有各种函数的Julia模块,我调用它来分析数据。这些函数中的一些函数依赖于包,这些包包含在文件“NeuroTools.jl”的开头。防止在Julia并行化中覆盖模块
module NeuroTools
using MAT, PyPlot, PyCall;
function getHists(channels::Array{Int8,2}...
许多我具备的功能是并行运行有用的,所以我写了一个驱动脚本映射使用为RemoteCall功能不同的线程/取。为了加载每个线程上的函数,我使用-L选项启动Julia以在每个工作线程上加载我的模块。
julia -p 16 -L NeuroTools.jl parallelize.jl
为了使加载功能集成到范围内,“parallelize.jl”脚本有行
@everywhere using NeuroTools
我的并行功能的工作原理和正确执行,但每个工作线程吐出了一堆警告来自被覆盖的模块。
WARNING: replacing module MAT
WARNING: Method definition read(Union{HDF5.HDF5Dataset, HDF5.HDF5Datatype, HDF5.HDF5Group}, Type{Bool}) in module MAT_HDF5...
(contniues for many lines)
有没有办法以不同的方式加载模块或更改范围以防止所有这些警告?在这个问题上文件似乎并不完全清楚。
请注意,目前的Julia并行化,例如, '-p 16','@ everywhere'等是基于单独的进程,而不是单独的线程。多线程将开始在Julia 0.5中引入 –