docs: def probe(self, hosts):
          '''
          .. seealso:: :attr:`probe`
          '''
  
          def __send_probe(host):
              ping = self.m(
                  '',
                  cmdd=dict(
                      cmd=' '.join([
                          self.__ping_cmd,
                          self.__num,
                          self.__net_if,
                          self.__packetsize,
                          host
                      ])
                  ),
                  critical=False,
                  verbose=False
              )
  
              up = True if ping.get('returncode') == 0 else False
              self.__probe_results[host] = {'up': up}
  
              if up:
                  p = ping.get('out')
  
                  loss = _search(rxlss, p)
                  ms = _findall(rxmst, p)
                  rtt = _search(rxrtt, p)
  
                  if loss:
                      loss = loss.group('loss')
                  self.__probe_results[host].update(dict(
                      ms=ms,
                      loss=loss,
                      rtt=rtt.groupdict()
                  ))
  
          hosts = to_list(hosts)
          pool_size = (
              len(hosts)
              if len(hosts) <= self.__max_pool_size else
              self.__max_pool_size
          )
  
          pool = _Pool(pool_size)
          pool.map(__send_probe, hosts)
          pool.close()
          pool.join()