code: def parallel_fill(self, games, threads=8):
          
          games.sort(key=os.path.basename)
          # A couple extra in case parsing fails
          max_games = int(self.max_size / self.sampling_frac / 200) + 480
          if len(games) > max_games:
              games = games[-max_games:]
  
          with mp.Pool(threads) as pool:
              res = tqdm(pool.imap(self.func, games), total=len(games))
              self.examples.extend(itertools.chain.from_iterable(res))
          print("Got", len(self.examples), "examples")
docs: games is a list of .tfrecord.zz game records.