              thread.start()
              self._threads.append(thread)
          logger.debug("Started all threads '%s': %s", self._name, len(self._threads))
  
      def join(self):
          """ Join the running threads, catching and re-raising any errors """
          logger.debug("Joining Threads: '%s'", self._name)
          for thread in self._threads:
              logger.debug("Joining Thread: '%s'", thread._name)  # pylint: disable=protected-access
 
</s> remove             retval = int(count_frames(self.args.input_dir))
 </s> add             retval = int(count_frames(self.args.input_dir, fast=True))
    def completed(self):
        """ Return False if there are any alive threads else True """
        retval = all(not thread.is_alive() for thread in self._threads)
        logger.debug(retval)
        return retval

              thread.start()
              self._threads.append(thread)
          logger.debug("Started all threads '%s': %s", self._name, len(self._threads))
  
    def completed(self):
        """ Return False if there are any alive threads else True """
        retval = all(not thread.is_alive() for thread in self._threads)
        logger.debug(retval)
        return retval

      def join(self):
          """ Join the running threads, catching and re-raising any errors """
          logger.debug("Joining Threads: '%s'", self._name)
          for thread in self._threads:
              logger.debug("Joining Thread: '%s'", thread._name)  # pylint: disable=protected-access
keep keep keep add keep keep keep keep keep
 Reinstate fast frame count for convert and extract. Exit early if count is wrong. 
lib/multithreading.py