W. *_*lin 5 parallel-processing julia
我写了一个带有各种函数的Julia模块,我打电话来分析数据.其中一些函数依赖于包,它们包含在文件"NeuroTools.jl"的开头.
module NeuroTools
using MAT, PyPlot, PyCall;
function getHists(channels::Array{Int8,2}...
Run Code Online (Sandbox Code Playgroud)
我拥有的许多函数对于并行运行很有用,所以我编写了一个驱动程序脚本,使用remotecall/fetch将函数映射到不同的线程.要在每个线程上加载函数,我使用-L选项启动Julia以在每个worker上加载我的模块.
julia -p 16 -L NeuroTools.jl parallelize.jl
Run Code Online (Sandbox Code Playgroud)
要将加载的函数放入范围,"parallelize.jl"脚本具有该行
@everywhere using NeuroTools
Run Code Online (Sandbox Code Playgroud)
我的并行函数正常工作并执行,但每个工作线程都会从被覆盖的模块中发出一堆警告.
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)
Run Code Online (Sandbox Code Playgroud)
有没有办法以不同的方式加载模块或更改范围以防止所有这些警告?在这个问题上,文档似乎并不完全清楚.
巧合的是我今天早上也在寻找同样的东西
(rd,wr) = redirect_stdout()
Run Code Online (Sandbox Code Playgroud)
所以你需要打电话
remotecall_fetch(worker_id, redirect_stdout)
Run Code Online (Sandbox Code Playgroud)
如果你想完全关闭它,这会起作用
如果您想重新打开它,您可以
out = STDOUT
(a,b) = redirect_stdout()
#then to turn it back on, do:
redirect_stdout(out)
Run Code Online (Sandbox Code Playgroud)