code: def _update_threads(self):
          
          if self.remaining_clusters is not None:
              self.threads = max(1,self.threads_total//self.remaining_clusters.value)
          #otherwise just keep the current (initial) value
          print("{} detected {} threads available to it".format(self.name,self.threads), file = self.log_fh)
docs: Update available thread count post-construction.
          To be called any number of times from run() method