gpt4 book ai didi

parallel-processing - 防止在 Julia 并行化中覆盖模块

转载 作者:行者123 更新时间:2023-12-03 14:34:25 26 4
gpt4 key购买 nike

我编写了一个 Julia 模块,其中包含我调用来分析数据的各种函数。其中一些函数依赖于包,这些包包含在文件“NeuroTools.jl”的开头。

module NeuroTools

using MAT, PyPlot, PyCall;

function getHists(channels::Array{Int8,2}...

我拥有的许多函数对于并行运行都很有用,因此我编写了一个驱动程序脚本来使用 remotecall/fetch 将函数映射到不同的线程。为了在每个线程上加载函数,我使用 -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)

有没有办法以不同的方式加载模块或更改范围以防止所有这些警告?关于这个问题,文档似乎并不完全清楚。

最佳答案

巧合的是,我正在寻找 same thing今天早上

(rd,wr) = redirect_stdout()

所以你需要打电话
remotecall_fetch(worker_id, redirect_stdout)

如果您想完全关闭它,这将起作用

如果你想重新打开它,你可以
out = STDOUT
(a,b) = redirect_stdout()
#then to turn it back on, do:
redirect_stdout(out)

关于parallel-processing - 防止在 Julia 并行化中覆盖模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38905473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com