Automatically decide if we need to use iterator mode to read a csv file.

    :param abspath: csv file absolute path.
    :param memory_usage: max memory will be used for pandas.read_csv().

def read_csv_arg_preprocess(abspath, memory_usage=100 * 1000 * 1000):
    """Automatically decide if we need to use iterator mode to read a csv file.

    :param abspath: csv file absolute path.
    :param memory_usage: max memory will be used for pandas.read_csv().
    """
    if memory_usage < 1000 * 1000:
        raise ValueError("Please specify a valid memory usage for read_csv, "
                         "the value should larger than 1MB and less than "
                         "your available memory.")

    size = os.path.getsize(abspath)  # total size in bytes
    n_time = math.ceil(size * 1.0 / memory_usage)  # at lease read n times

    lines = count_lines(abspath)  # total lines
    chunksize = math.ceil(lines / n_time)  # lines to read each time

    if chunksize >= lines:
        iterator = False
        chunksize = None
    else:
        iterator = True
    return iterator, chunksize