class_docstr: Cache the function calls
code: def put(self, key, val):
      self._lock.acquire()
      self._content[key] = (datetime.datetime.now(), val)
      try:
          with open(self._cache_file, "wb") as cf:
              cloudpickle.dump(self._content, cf)
      finally:
          self._lock.release()
  
file_path: bluefog/bluefog/run/horovodrun/util/cache.py
imports: import datetime
  import errno
  import os
  import threading
  import cloudpickle
label_desc: Use image node_id 3 for calling the Cache obj's underlying member method code with example usage: obj.put(key, val) without return types