<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def batch_persist(dfs, tables, *args, **kwargs):
 """ Persist multiple DataFrames into ODPS. :param dfs: DataFrames to persist. :param tables: Table names to persist to. Use (table, partition) tuple to store to a table partition. :param args: args for Expr.persist :param kwargs: kwargs for Expr.persist :Examples: """

        from .delay import Delay

        if 'async' in kwargs:
            kwargs['async_'] = kwargs['async']
        execute_keys = ('ui', 'async_', 'n_parallel', 'timeout', 'close_and_notify')
        execute_kw = dict((k, v) for k, v in six.iteritems(kwargs) if k in execute_keys)
        persist_kw = dict((k, v) for k, v in six.iteritems(kwargs) if k not in execute_keys)

        delay = Delay()
        persist_kw['delay'] = delay

        for df, table in izip(dfs, tables):
            if isinstance(table, tuple):
                table, partition = table
            else:
                partition = None
            df.persist(table, partition=partition, *args, **persist_kw)

        return delay.execute(**execute_kw)