Wolfram Language

Framework de canais

Comunicação muitos-para-um e muitos-para-muitos

Inicie a escuta em um canal de comunicação de muitos-para-um.

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

Envie mensagens para o canal de várias sessões da Wolfram Language, por exemplo, de kernels paralelos na mesma máquina.

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

As mensagens recebidas.

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

Um diagrama de troca das mensagens.

mostre o input completo da Wolfram Language
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]=

Comece a ouvir no mesmo canal em múltiplas sessões de kernels paralelos.

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

Deixe que todos os kernels paralelos enviem seus respectivos IDs para o canal.

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

As mensagens recebidas pelos ouvintes, com seus respectivos IDs de kernels.

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

Um diagrama de troca.

mostre o input completo da Wolfram Language
In[9]:=
Click for copyable input
ParallelEvaluate[$KernelID -> l["Message", All]]; Graph[Flatten[Thread /@ %], VertexShape -> spikey, VertexSize -> .5]
Out[9]=

Exemplos Relacionados

de en es fr ja ko ru zh