code: def _memory_for_one_more(self):
      if self.gpu_memory_limit is None:
          return True  # first run
  
      in_use = BytesInUse()
      peak = MaxBytesInUse()
      if (
          self.max_above_resting is None
          or (peak - in_use) > self.max_above_resting
      ):
          self.max_above_resting = peak - in_use
  
      if (
          self.max_model_size is None
          or (in_use - self.previous_in_use) > self.max_model_size
      ):
          self.max_model_size = in_use - self.previous_in_use
  
      self.previous_in_use = in_use
      cpu_percent = psutil.virtual_memory().percent
      LOGGER.info(
          (
              "models loaded: {num_models}, in_use: {in_use}, max_above_resting: {mar},"
              " max_model_size: {mms}, gpu_memory_limit: {mem_limit}, cpu percent used: {cpu_percent}"
          ).format(
              num_models=len(self.loaded_models),
              in_use=bytes_to_meg(in_use),
              mar=bytes_to_meg(self.max_above_resting),
              mms=bytes_to_meg(self.max_model_size),
              mem_limit=bytes_to_meg(self.gpu_memory_limit),
              cpu_percent=cpu_percent,
          )
      )
      if cpu_percent > self.ram_max_frac * 100:
          return False
      return (
          in_use
          + self.max_above_resting
          + self.max_model_size
          + self.reserved
      ) < self.gpu_memory_limit
  
imports: from collections import OrderedDict
  import gc
  import logging
  import functools
  import psutil
  from finetune.target_models.sequence_labeling import SequenceLabeler
  import tensorflow
  from finetune.base import BaseModel
  from finetune.custom_ops import BytesInUse, BytesLimit, MaxBytesInUse
  from finetune.errors import FinetuneSchedulerError
label_desc: Use image node_id 2 for calling the Scheduler obj's underlying member method code with example usage: obj._memory_for_one_more() and returns: unknown, True, False