docstr: Waits for a command to start.
  
  Returns as soon as the command has started. This method raises an exception
  when given optional timeout.Timeout instance runs out.
  
  :param timeout: timeout.Timeout
docstr_tok: ["Waits","for","a","command","to","start",".","Returns","as","soon","as","the","command","has","started",".","This","method","raises","an","exception","when","given","optional","timeout.Timeout","instance","runs","out",".",":","param","timeout",":","timeout.Timeout"]
code: def wait_for_command_start(self, timeout=None):
      """Waits for a command to start.
  
      Returns as soon as the command has started. This method raises an exception
      when given optional timeout.Timeout instance runs out.
  
      :param timeout: timeout.Timeout
      """
      self._wait_cond.acquire()
      try:
          while self._command_thread is None:
              if timeout:
                  self._wait_cond.wait(timeout.remaining())
                  timeout.check_time_out_for("command to run")
              else:
                  self._wait_cond.wait()
      finally:
          self._wait_cond.release()
  
imports: import abc
  import threading
  from horovod.runner.common import util
  from horovod.runner.common.util import network, safe_shell_exec, timeout
  from horovod.runner.util.streams import Pipe
  from horovod.runner.util.threads import in_thread
label_desc: Use image node_id 7 for calling the BasicTaskService obj's underlying member method code with example usage: obj.wait_for_command_start(timeout) without return types