docstr: Start Rabit tracker
code: def execute(cls, ctx, op):
      """Start Rabit tracker"""
      from .tracker import RabitTracker
  
      env = {"DMLC_NUM_WORKER": op.n_workers}
      rabit_context = RabitTracker(
          host_ip=ctx.get_local_host_ip(), n_workers=op.n_workers
      )
      env.update(rabit_context.worker_envs())
  
      rabit_context.start(op.n_workers)
      thread = Thread(target=rabit_context.join)
      thread.daemon = True
      thread.start()
  
      rabit_args = [to_binary(f"{k}={v}") for k, v in env.items()]
      ctx[op.outputs[0].key] = rabit_args
  
file_path: mars/mars/learn/contrib/xgboost/start_tracker.py
imports: from threading import Thread
  from ....None import opcodes
  from ....core import NotSupportTile
  from ....serialization.serializables import Int32Field
  from ....utils import to_binary
  from ...operands import LearnOperand, LearnOperandMixin, OutputType
label_desc: Use image node_id 3 for calling the StartTracker obj's underlying member method code with example usage: obj.execute(cls, ctx, op) without return types