Multithreading Julia@everywhere变量

Multithreading Julia@everywhere变量,multithreading,parallel-processing,julia,Multithreading,Parallel Processing,Julia,我正在尝试使用Julia并行实现代码。我使用@everywhere宏使所有进程从RemoteRef获取数据 是否可以使用仅在@everywhere表达式的第一个进程上定义的变量名,并以某种方式指定我希望它向所有进程发送该变量的值,而不是变量名 例如: r = RemoteRef() put(r, data) @everywhere data = fetch(r) 这将返回一个错误,因为未在所有进程上定义r 如何将数据移动到所有流程 另外,我可以告诉Julia在表达式中输入值而不是变量名吗? 类

我正在尝试使用Julia并行实现代码。我使用@everywhere宏使所有进程从RemoteRef获取数据

是否可以使用仅在@everywhere表达式的第一个进程上定义的变量名,并以某种方式指定我希望它向所有进程发送该变量的值,而不是变量名

例如:

r = RemoteRef()
put(r, data)
@everywhere data = fetch(r)
这将返回一个错误,因为未在所有进程上定义
r

如何将数据移动到所有流程

另外,我可以告诉Julia在表达式中输入值而不是变量名吗? 类似于how
name=“John”;println(“Hello,$name”)
将打印“Hello,John”

以查找Spencer在一个漂亮的小软件包checkout中指出的函数(和宏)。测试(CI显示这些测试在所有平台的v0.5上通过)

对于您的问题,您可以使用
sendto
功能:

z = randn(10, 10); sendto(workers(), z=z)
@everywhere println(z)

你对这个还有意见吗?我相信你可以做你想做的,但是有很多问题,我不确定该解决哪些/如何解决。我想我已经找到了一个解决方案,将数据作为一个函数的参数,我可以在不同的进程中@spawn,但这不是一个很好的解决方案。任何帮助都将不胜感激。我需要告诉你什么?那太好了,你可以看到数据如何成为
@spawnat
的参数。如果可以在任何地方复制数据,还有其他选择。。。如果您在Linux上,也可以使用
SharedArray
。需要将数据移动保持在最低限度以提高效率。也许如果你写一点关于你的“大局”的话,并行化选项可能会更清晰一些。每个流程都拥有一部分培训示例。我希望向每个流程发送权重矩阵,允许他们根据训练示例确定权重的更新,并将更新发送回主流程。然后,主进程计算新的权重矩阵,并将其发送回所有其他进程,以便它们可以再次进行训练。我刚刚回答了一个相关问题,我认为我发布的函数应该可以帮助您完成需要的任务。