docstr: Retrieve item from the cache(if available)
  based on a key
  
  Parameters:
  ----------
  key
      parameter to retrieve cache item
  fn,args
      key to retrieve if "key" is None
code: def call(self, fn, args=(), key=None):
      """
      Retrieve item from the cache(if available)
      based on a key
  
      Parameters:
      ----------
      key
          parameter to retrieve cache item
      fn,args
          key to retrieve if "key" is None
      """
      if key is None:
          key = (fn, tuple(args))
      if key not in self.cache:
          _logger.debug("cache miss %i", len(self.cache))
          self.cache[key] = fn(*args)
      else:
          _logger.debug("cache hit %i", len(self.cache))
      return self.cache[key]
  
file_path: Theano/theano/gof/callcache.py
imports: from __future__ import absolute_import, print_function, division
  import logging
  import six.moves.cPickle
label_desc: Use image node_id 3 for calling the CallCache obj's underlying member method code with example usage: obj.call(fn, args, key) and returns: self