code: def type_consumer():
      # type: () -> None
      
  
      # we are not interested in profiling type_consumer itself
      # but we start it before any other thread
      while True:
          item = _task_queue.get()
          if isinstance(item, KeyAndTypes):
              if item.key in collected_args:
                  # Previous call didn't get a corresponding return, perhaps because we
                  # stopped collecting types in the middle of a call or because of
                  # a recursive function.
                  _flush_signature(item.key, UnknownType)
              collected_args[item.key] = ArgTypes(item.types)
          else:
              assert isinstance(item, KeyAndReturn)
              if item.key in collected_args:
                  _flush_signature(item.key, item.return_type)
          _task_queue.task_done()
docs: Infinite loop of the type consumer thread.
      It gets types to process from the task query.