私は、データを分析するために呼び出すさまざまな関数を持つJuliaモジュールを作成しました。これらの関数のいくつかは、パッケージ "NeuroTools.jl"の先頭に含まれるパッケージに依存しています。ジュリア並列化でモジュールを上書きしないようにする
module NeuroTools
using MAT, PyPlot, PyCall;
function getHists(channels::Array{Int8,2}...
私が持っている機能の多くは、並列で実行するのに有用であるので、私はremotecall /フェッチ使用して別のスレッドに機能をマッピングするために、ドライバのスクリプトを書きました。各スレッドで関数を読み込むために、Juliaを-Lオプションで起動して、モジュールを各ワーカーに読み込みます。 「parallelize.jl」スクリプトはライン
@everywhere using NeuroTools
私の並列機能が動作し、適切に実行されますが、各ワーカースレッドが警告の束を吐き出した、スコープにロードされた機能を持って
julia -p 16 -L NeuroTools.jl parallelize.jl
上書きされているモジュールから削除します。
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)
モジュールを別々にロードするか、範囲を変更してこれらの警告が表示されないようにする方法はありますか?この問題については、ドキュメントで完全にはっきりしていないようです。
現在のジュリア並列化、例えば、 '-p 16'、' @ everywhere'などは別々のスレッドではなく、別々のプロセスに基づいています。 Julia 0.5でマルチスレッド化が開始される –