我無法理解如何使用工作進程和模塊。我會盡量簡單地解釋我的困難。Julia - 模塊和並行性
我對我的主要過程(過程1)有一個模塊,module A
。
在工作進程上,我有module B
,它應該處理許多複雜的計算(對於並行工作者通常是這種情況)。
的問題是,它好像需要對工人定義module A
...
的問題是,module A
比module B
大得多,它包含數千行代碼,但只module B
用途大約15個短的功能。
有任何解決方法,所以我可以讓我的主要工作人員必須module A
訪問,但工人進入module B
但能夠從方法module A
叫工人,並讓他們運行在他們的module B
定義的函數?例如,module B
中可能有一個方法,稱爲calculate_stuff()
。
我希望達到的結構是這樣的:
module A # main worker process using this module
function call_worker_and_calculate()
remotecall_fetch(calculate_stuff, 2)
end
export call_worker_and_calculate
end
module B # worker process 2 is using this module
function calculate_stuff()
# some stuff
end
export calculate_stuff
end
這個特殊的例子將返回錯誤信息:
julia> A.call_worker_and_calculate()
ERROR: On worker 2:
UndefVarError: A not defined
您可以將'A'中的函數改爲接受函數ex ecute作爲參數,例如'call_worker_and_calculate(f)= remotecall_fetch(f,2)',並且調用類似於'A.call_worker_and_calculate(B.calculate_stuff)'。無論如何,'B'必須在路徑中或者使用'@ everywhere'定義在每個工人身上。 – tim