code: def run_followers(self, prompt):
          
          assert isinstance(prompt, Prompt)
          # Put the prompt on the queue.
          self.pending_prompts.put(prompt)
  
          if self.iteration_lock.acquire(False):
              start_time = time.time()
              i = 0
              try:
                  while True:
                      try:
                          prompt = self.pending_prompts.get(False)
                      except Empty:
                          break
                      else:
                          followers = self.system.followers[prompt.process_name]
                          for follower_name in followers:
                              follower = self.system.processes[follower_name]
                              follower.run(prompt)
                              i += 1
                          self.pending_prompts.task_done()
              finally:
                  run_frequency = i / (time.time() - start_time)
                  # print(f"Run frequency: {run_frequency}")
                  self.iteration_lock.release()
docs: First caller adds a prompt to queue and
          runs followers until there are no more
          pending prompts.
  
          Subsequent callers just add a prompt
          to the queue, avoiding recursion.