Я написал модуль Julia с различными функциями, которые я вызываю для анализа данных. Некоторые из этих функций зависят от пакетов, которые включены в начале файла «NeuroTools.jl».Предотвращение перезаписи модулей в распараллеливании Julia
module NeuroTools
using MAT, PyPlot, PyCall;
function getHists(channels::Array{Int8,2}...
Многие функции у меня полезны работать параллельно, так что я написал скрипт драйвера для отображения функций в разных потоках с помощью remotecall/выборки. Чтобы загрузить функции в каждом потоке, я запускаю Julia с параметром -L для загрузки моего модуля на каждого рабочего.
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',' @ везде' и т. д. основаны на отдельных процессах, а не на отдельных потоках. Многопоточность начнет появляться в Julia 0.5 –