          logger.debug("QueueManager deleting: '%s'", name)
          del self.queues[name]
          logger.debug("QueueManager deleted: '%s'", name)
  
      def get_queue(self, name, maxsize=0, multiprocessing_queue=True):
          """ Return a queue from the manager
              If it doesn't exist, create it """
          logger.debug("QueueManager getting: '%s'", name)
          queue = self.queues.get(name, None)
          if not queue:
 
</s> remove             self.add_queue(name, maxsize, multiprocessing_queue)
 </s> add             self.add_queue(name, maxsize) </s> remove         if multiprocessing_queue:
            queue = self.manager.Queue(maxsize=maxsize)
        else:
            queue = Queue(maxsize=maxsize)
 </s> add         queue = Queue(maxsize=maxsize) </s> remove     def add_queue(self, name, maxsize=0, multiprocessing_queue=True):
 </s> add     def add_queue(self, name, maxsize=0): </s> remove         # Despite launching a subprocess, the scripts still want to access the same logging
        # queue as the GUI, so make sure the GUI gets it's own queue
        self._log_queue = self.manager.Queue() if "gui" not in sys.argv else mp.Queue()
 </s> add  </s> remove                 queue_manager.get_queue(q_name, multiprocessing_queue=False))
 </s> add                 queue_manager.get_queue(q_name))
    def get_queue(self, name, maxsize=0):
          logger.debug("QueueManager deleting: '%s'", name)
          del self.queues[name]
          logger.debug("QueueManager deleted: '%s'", name)
  
    def get_queue(self, name, maxsize=0):
          """ Return a queue from the manager
              If it doesn't exist, create it """
          logger.debug("QueueManager getting: '%s'", name)
          queue = self.queues.get(name, None)
          if not queue:
keep keep keep keep replace keep keep keep keep keep
 De-Multiprocess Extract (#871)

* requirements.txt: - Pin opencv to 4.1.1 (fixes cv2-dnn error)

* lib.face_detect.DetectedFace: change LandmarksXY to landmarks_xy. Add left, right, top, bottom attributes

* lib.model.session: Session manager for loading models into different graphs (for Nvidia + CPU)

* plugins.extract._base: New parent class for all extract plugins

* plugins.extract.pipeline. Remove MultiProcessing. Dynamically limit batchsize for Nvidia cards. Remove loglevel input

* S3FD + FAN plugins. Standardise to Keras version for all backends

* Standardize all extract plugins to new threaded codebase

* Documentation. Start implementing Numpy style docstrings for Sphinx Documentation

* Remove s3fd_amd. Change convert OTF to expect DetectedFace object

* faces_detect - clean up and documentation

* Remove PoolProcess

* Migrate manual tool to new extract workflow

* Remove AMD specific extractor code from cli and plugins

* Sort tool to new extract workflow

* Remove multiprocessing from project

* Remove multiprocessing queues from QueueManager

* Remove multiprocessing support from logger

* Move face_filter to new extraction pipeline

* Alignments landmarksXY > landmarks_xy and legacy handling

* Intercept get_backend for sphinx doc build

# Add Sphinx documentation 
lib/queue_manager.py