code: def fileprep(self):
          
          # Create and start threads
          for i in range(self.cpus):
              # Send the threads to the appropriate destination function
              threads = Thread(target=self.prep, args=())
              # Set the daemon to true - something to do with thread management
              threads.setDaemon(True)
              # Start the threading
              threads.start()
          for sample in self.metadata:
              # Set the name of the decompressed, combined .fastq file
              sample.general.combined = os.path.join(sample.general.outputdirectory, '{sample_name}_combined.fastq'
                                                     .format(sample_name=sample.name))
              self.queue.put(sample)
          self.queue.join()
docs: Decompress and concatenate .fastq files