<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def append_multiple(self, data, segment=0):
 """ Append multiple rows to an SFrame. Throws a RuntimeError if one or more column's type is incompatible with a type appended. Parameters data : iterable[iterable] A collection of multiple iterables, each representing a single row. segment : int The segment to write the given rows. Each segment is numbered sequentially, starting with 0. Any value in segment 1 will be after any value in segment 0, and the order of rows in each segment is preserved as they are added. """

        if not hasattr(data, '__iter__'):
            raise TypeError("append_multiple must be passed an iterable object")
        tmp_list = []

        # Avoid copy in cases that we are passed materialized data that is
        # smaller than our block size
        if hasattr(data, '__len__'):
            if len(data) <= self._block_size:
                self._builder.append_multiple(data, segment)
                return

        for i in data:
            tmp_list.append(i)
            if len(tmp_list) >= self._block_size:
                self._builder.append_multiple(tmp_list, segment)
                tmp_list = []
        if len(tmp_list) > 0:
            self._builder.append_multiple(tmp_list, segment)