code: def threadpool_waited_join(thread_object, timeout):
      """
      Call threadpool.join() with timeout. If join completed return True, otherwise False
      Notice: This function creates another daemon thread and kills it, use with care.
  
      :param thread_object: Thread to join
      :param float timeout: timeout in seconds for the join operation to complete
      :return: True os join() completed
      """
      if not thread_object:
          return True
  
      if isinstance(thread_object, threading.Thread):
          thread_object.join(timeout=timeout)
          return not thread_object.is_alive()
  
      done_signal = threading.Event()
      waitable = threading.Thread(
          target=__wait_thread,
          args=(
              thread_object,
              done_signal,
          ),
      )
      waitable.daemon = True
      waitable.start()
  
      if not done_signal.wait(timeout=timeout):
          kill_thread(waitable)
          return False
      return True
  
file_path: clearml/clearml/utilities/lowlevel/threads.py
imports: import ctypes
  import threading
  import six
  import sys
  import time
label_desc: Use image node_id 5 for calling a global function with example usage: threadpool_waited_join(thread_object, timeout) and returns: True, True, unknown, False