class_docstr: A runner to execute commands on an array of machines. This runner
  is inspired by Nezha (https://github.com/zhuzilin/NeZha).
class_docstr_tok: ["A","runner","to","execute","commands","on","an","array","of","machines",".","This","runner","is","inspired","by","Nezha","(","https",":","\/\/github.com\/zhuzilin\/NeZha",")","."]
docstr: Receive messages from all hosts
  
  Returns:
      msg_from_node (dict): a dictionary which contains messages from each node
docstr_tok: ["Receive","messages","from","all","hosts","Returns",":","msg_from_node","(","dict",")",":","a","dictionary","which","contains","messages","from","each","node"]
code: def recv_from_all(self) -> dict:
      """
      Receive messages from all hosts
  
      Returns:
          msg_from_node (dict): a dictionary which contains messages from each node
      """
  
      msg_from_node = dict()
      for hostname, conn in self.master_recv_conns.items():
          msg_from_node[hostname] = conn.recv()
      return msg_from_node
  
file_path: ColossalAI/colossalai/cli/launcher/multinode_runner.py
imports: from multiprocessing import Pipe, Process
  from multiprocessing import connection
  import click
  import fabric
  from .hostinfo import HostInfo, HostInfoList
label_desc: Use image node_id 5 for calling the MultiNodeRunner obj's underlying member method code with example usage: obj.recv_from_all() and returns: msg_from_node