我正在尝试使用Julia并行实现代码。我正在使用@everywhere宏来使所有进程从RemoteRef获取数据。
是否可以使用仅在@everywhere表达式中的第一个进程上定义的变量名,并以某种方式指定我希望它将该变量的值而不是变量名称发送到所有进程?
示例:
r = RemoteRef()
put(r, data)
@everywhere data = fetch(r)
这会返回错误,因为未在所有进程中定义r
。
我应该如何将数据移动到所有流程?
另外,我可以告诉Julia在表达式中放置值而不是变量名吗?
类似name = "John"; println("Hello, $name")
打印"Hello, John"
答案 0 :(得分:0)
为了找到函数(和宏),Spencer指向一个漂亮的小包,checkout ParallelDataTransfer.jl。测试are good examples of usage(以及CI显示这些测试在所有平台上都传递了v0.5)。
对于您的问题,您可以使用sendto
功能:
z = randn(10, 10); sendto(workers(), z=z)
@everywhere println(z)