code: def _probe_one(self, intf, addr, result_queue):
      for iter in range(self._retries):
          sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
          sock.settimeout(self._probe_timeout)
          try:
              sock.connect(addr)
              rfile = sock.makefile("rb")
              wfile = sock.makefile("wb")
              try:
                  self._wire.write(PingRequest(), wfile)
                  resp = self._wire.read(rfile)
                  if resp.service_name != self._service_name:
                      return
                  if self._match_intf:
                      # Interface name of destination and source must match
                      # since `match_intf` is requested.
                      client_intf_addrs = [
                          x.address
                          for x in psutil.net_if_addrs().get(intf, [])
                          if x.family == socket.AF_INET
                      ]
                      if resp.source_address not in client_intf_addrs:
                          return
                  result_queue.put((intf, addr))
                  return
              finally:
                  rfile.close()
                  wfile.close()
          except:
              pass
          finally:
              sock.close()
  
imports: import random
  import socket
  import struct
  import threading
  import cloudpickle
  import psutil
  from six.moves import queue, socketserver
  from bluefog.run.horovodrun.common.util import secret
label_desc: Use image node_id 3 for calling the BasicClient obj's underlying member method code with example usage: obj._probe_one(intf, addr, result_queue) without return types