@API.register<EOL><INDENT>@API.aiocache_enabled(fake_return=[])<EOL>@API.timeout<EOL>@API.plugins<EOL>async def multi_get(self, keys, loads_fn=None, namespace=None, _conn=None):<DEDENT>
start = time.monotonic()<EOL>loads = loads_fn or self._serializer.loads<EOL>ns_keys = [self.build_key(key, namespace=namespace) for key in keys]<EOL>values = [<EOL>loads(value)<EOL>for value in await self._multi_get(<EOL>ns_keys, encoding=self.serializer.encoding, _conn=_conn<EOL>)<EOL>]<EOL>logger.debug(<EOL>"<STR_LIT>",<EOL>ns_keys,<EOL>len([value for value in values if value is not None]),<EOL>time.monotonic() - start,<EOL>)<EOL>return values<EOL>
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