code: async def multi_get(self, keys, loads_fn=None, namespace=None, _conn=None):
          
          start = time.monotonic()
          loads = loads_fn or self._serializer.loads
  
          ns_keys = [self.build_key(key, namespace=namespace) for key in keys]
          values = [
              loads(value)
              for value in await self._multi_get(
                  ns_keys, encoding=self.serializer.encoding, _conn=_conn
              )
          ]
  
          logger.debug(
              "MULTI_GET %s %d (%.4f)s",
              ns_keys,
              len([value for value in values if value is not None]),
              time.monotonic() - start,
          )
          return values
docs: Get multiple values from the cache, values not found are Nones.
  
          :param keys: list of str
          :param loads_fn: callable alternative to use as loads function
          :param namespace: str alternative namespace to use
          :param timeout: int or float in seconds specifying maximum timeout
              for the operations to last
          :returns: list of objs
          :raises: :class:`asyncio.TimeoutError` if it lasts more than self.timeout