docstr: Creates a frame and writes it to disk.
  
  Args:
      trainable: a list of namedtuple (tensors, name).
      arrays: a list of namedtuple (tensors, name).
      frame: lalala
docstr_tok: ["Creates","a","frame","and","writes","it","to","disk",".","Args",":","trainable",":","a","list","of","namedtuple","(","tensors",",","name",")",".","arrays",":","a","list","of","namedtuple","(","tensors",",","name",")",".","frame",":","lalala"]
code: def update(self, trainable=None, arrays=None, frame=None):
      """Creates a frame and writes it to disk.
  
      Args:
          trainable: a list of namedtuple (tensors, name).
          arrays: a list of namedtuple (tensors, name).
          frame: lalala
      """
  
      new_config = self._get_config()
      if True or self._enough_time_has_passed(
          self.previous_config["FPS"]
      ):
          # self.visualizer.update(new_config)
          self.last_update_time = time.time()
          final_image = self._update_frame(
              trainable, arrays, frame, new_config
          )
          self._update_recording(final_image, new_config)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from ..proto.summary_pb2 import Summary
  from ..proto.summary_pb2 import SummaryMetadata
  from ..proto.tensor_pb2 import TensorProto
  from ..proto.tensor_shape_pb2 import TensorShapeProto
  import os
  import time
  import numpy
  from .file_system_tools import read_pickle, write_pickle, write_file
  from .shared_config import PLUGIN_NAME, TAG_NAME, SUMMARY_FILENAME, DEFAULT_CONFIG, CONFIG_FILENAME, SUMMARY_COLLECTION_KEY_NAME, SECTION_INFO_FILENAME
  from .None import video_writing
label_desc: Use image node_id 9 for calling the Beholder obj's underlying member method code with example usage: obj.update(trainable, arrays, frame) without return types