class_docstr: VideoManager object for getting frames from video source for inference
  using multithreading for read and write frames.
class_docstr_tok: ["VideoManager","object","for","getting","frames","from","video","source","for","inference","using","multithreading","for","read","and","write","frames","."]
docstr: Add the visualized task to the write queue for display/write to outputfile.
  Args:
      task (TaskInfo object): task object that contain
          the necessary information for prediction visualization. (e.g. visualized frames.)
docstr_tok: ["Add","the","visualized","task","to","the","write","queue","for","display\/write","to","outputfile",".","Args",":","task","(","TaskInfo","object",")",":","task","object","that","contain","the","necessary","information","for","prediction","visualization",".","(","e.g",".","visualized","frames",".",")"]
code: def display(self, task):
      """
      Add the visualized task to the write queue for display/write to outputfile.
      Args:
          task (TaskInfo object): task object that contain
              the necessary information for prediction visualization. (e.g. visualized frames.)
      """
      with self.write_lock:
          self.write_queue[task.id] = (True, task)
  
imports: import atexit
  import copy
  import queue
  import threading
  import time
  import cv2
  import slowfast.utils.logging
  from slowfast.visualization.utils import TaskInfo
label_desc: Use image node_id 7 for calling the ThreadVideoManager obj's underlying member method code with example usage: obj.display(task) without return types