class_docstr: tracker for rabit
class_docstr_tok: ["tracker","for","rabit"]
code: def __init__(self, hostIP, nslave, port=9091, port_end=9999):
      sock = socket.socket(get_family(hostIP), socket.SOCK_STREAM)
      for port in range(port, port_end):
          if type(port) != int:
              logging.error("port must be an integer")
          if port not in range(1, 65535):
              logging.error(
                  "port %d must be between 1 and 165535", port
              )
          try:
              sock.bind((hostIP, port))
              self.port = port
              break
          except socket.error as e:
              if e.errno in [98, 48]:
                  continue
              else:
                  raise
      sock.listen(256)
      self.sock = sock
      self.hostIP = hostIP
      self.thread = None
      self.start_time = None
      self.end_time = None
      self.nslave = nslave
      logging.info("start listen on %s:%d", hostIP, self.port)
  
imports: from __future__ import absolute_import
  import os
  import sys
  import socket
  import struct
  import subprocess
  import argparse
  import time
  import logging
  from threading import Thread
label_desc: Use image node_id 1 to create a new RabitTracker object from inherited base classes: object with example: obj = RabitTracker(hostIP, nslave, port, port_end)