.. seealso:: :attr:`probe`

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()