Wolfram 语言

通道框架

多对一和多对多通信

开始侦听多对一通信的信道.

In[1]:=
Click for copyable input
listener = ChannelListen["master"]
Out[1]=

发送消息给来自多个会话的信道(例如,来自于同一台机器上的并行内核).

In[2]:=
Click for copyable input
ParallelEvaluate[ChannelSend["master", $KernelID]]
Out[2]=

收到的消息.

In[3]:=
Click for copyable input
listener["Message", All]
Out[3]=

消息交换图表.

显示完整的 Wolfram 语言输入
In[4]:=
Click for copyable input
spikey = ImageCrop@ Import["http://www.wolfram.com/spikey/img/spikey.png"];
In[5]:=
Click for copyable input
Graph[Table[i \[DirectedEdge] 0, {i, listener["MessageID", All]}], VertexShape -> spikey, VertexSize -> .5]
Out[5]=

在多个并行内核会话中开始侦听相同信道.

In[6]:=
Click for copyable input
ParallelEvaluate[l = ChannelListen["all"]]
Out[6]=

让所有并行内核向通道发送其对应的 ID.

In[7]:=
Click for copyable input
ParallelEvaluate[ChannelSend["all", $KernelID]]
Out[7]=

侦听者收到的消息以及其相对的内核 ID.

In[8]:=
Click for copyable input
ParallelEvaluate[$KernelID -> l["Message", All]]
Out[8]=

交换图表.

显示完整的 Wolfram 语言输入
In[9]:=
Click for copyable input
ParallelEvaluate[$KernelID -> l["Message", All]]; Graph[Flatten[Thread /@ %], VertexShape -> spikey, VertexSize -> .5]
Out[9]=

相关范例

de en es fr ja ko pt-br ru