Execute the operation scheduling items as needed
        :param kv: An iterable of keys (or key-values, or Items)
        :param kwargs: Settings for the operation
        :return: A MultiResult object

def execute(self, kv, **kwargs):
        """
        Execute the operation scheduling items as needed
        :param kv: An iterable of keys (or key-values, or Items)
        :param kwargs: Settings for the operation
        :return: A MultiResult object
        """
        self._verify_iter(kv)
        if not len(kv):
            raise ArgumentError.pyexc(obj=kv, message="No items in container")

        if isinstance(kv, dict):
            is_dict = True
            try:
                kviter = kv.iteritems()
            except AttributeError:
                kviter = iter(kv.items())
        else:
            is_dict = False
            kviter = iter(kv)

        is_itmcoll = isinstance(kv, ItemCollection)

        mres = kwargs.get('_MRES')
        if mres is None:
            mres = self.parent._make_mres()

        self.set_mres_flags(mres, kwargs)

        C.lcb_sched_enter(self.instance)
        num_items = 0
        while True:
            # Clear the previous command object
            C.memset(self.c_command, 0, ffi.sizeof(self.c_command[0]))

            try:
                self._invoke_submit(kviter, is_dict, is_itmcoll, mres, kwargs)
                num_items += 1
            except StopIteration:
                break
            except:
                C.lcb_sched_fail(self.instance)
                raise

        C.lcb_sched_leave(self.instance)
        mres._remaining += num_items
        # print "Execute(): mres:", mres
        return mres