def batch_get(self, tablename, keys, attributes=None, alias=None,
                  consistent=False, return_capacity=None):
        """
        Perform a batch get of many items in a table

        Parameters
        ----------
        tablename : str
            Name of the table to fetch from
        keys : list or iterable
            List or iterable of primary key dicts that specify the hash key and
            the optional range key of each item to fetch
        attributes : str or list, optional
            See docs for ProjectionExpression. If list, it will be joined by
            commas.
        alias : dict, optional
            See docs for ExpressionAttributeNames
        consistent : bool, optional
            Perform a strongly consistent read of the data (default False)
        return_capacity : {NONE, INDEXES, TOTAL}, optional
            INDEXES will return the consumed capacity for indexes, TOTAL will
            return the consumed capacity for the table and the indexes.
            (default NONE)

        """
        keys = [self.dynamizer.encode_keys(k) for k in keys]
        return_capacity = self._default_capacity(return_capacity)
        ret = GetResultSet(self, tablename, keys,
                           consistent=consistent, attributes=attributes,
                           alias=alias, return_capacity=return_capacity)
        return ret