class_docstr: Configure TF Encrypted to use threads on the local CPU.
  
  Each thread instantiates a different Player to simulate secure computations
  without requiring networking. Mostly intended for development/debugging use.
  
  By default new players will be added when looked up for the first time;
  this is useful for  instance to get a complete list of players involved
  in a particular computation (see `auto_add_unknown_players`).
  
  :param (str) player_names: List of players to be used in the session.
  :param str job_name: The name of the job.
  :param bool auto_add_unknown_players: Auto-add player on first lookup.
code: def get_player(self, name_or_player):
      if isinstance(name_or_player, Player):
          # we're passed a player
          assert name_or_player in self._players
          return name_or_player
  
      # we're passed a name
      player = next(
          (
              player
              for player in self._players
              if player.name == name_or_player
          ),
          None,
      )
      if player is None and self._auto_add_unknown_players:
          player = self.add_player(name_or_player)
      return player
  
imports: import json
  import logging
  import math
  from abc import ABC
  from abc import abstractmethod
  from collections import OrderedDict
  from pathlib import Path
  import tensorflow
  from .player import Player
label_desc: Use image node_id 4 for calling the LocalConfig obj's underlying member method code with example usage: obj.get_player(name_or_player) and returns: player, name_or_player