@staticmethod
def multi_cache_walker(instruments, fields, start_time=None, end_time=None, freq='day'):
    '\n        This method is used to prepare the expression cache for the client.\n        Then the client will load the data from expression cache by itself.\n\n        '
    instruments_d = DatasetProvider.get_instruments_d(instruments, freq)
    column_names = DatasetProvider.get_column_names(fields)
    cal = Cal.calendar(start_time, end_time, freq)
    if (len(cal) == 0):
        return
    start_time = cal[0]
    end_time = cal[(- 1)]
    if (C.maxtasksperchild is None):
        p = Pool(processes=C.kernels)
    else:
        p = Pool(processes=C.kernels, maxtasksperchild=C.maxtasksperchild)
    for inst in instruments_d:
        p.apply_async(LocalDatasetProvider.cache_walker, args=(inst, start_time, end_time, freq, column_names))
    p.close()
    p.join()
This method is used to prepare the expression cache for the client.
Then the client will load the data from expression cache by itself.
@staticmethod
def multi_cache_walker(instruments, fields, start_time=None, end_time=None, freq='day'):
    '\n        This method is used to prepare the expression cache for the client.\n        Then the client will load the data from expression cache by itself.\n\n        '
    instruments_d = DatasetProvider.get_instruments_d(instruments, freq)
    column_names = DatasetProvider.get_column_names(fields)
    cal = Cal.calendar(start_time, end_time, freq)
    if (len(cal) == 0):
        return
    start_time = cal[0]
    end_time = cal[(- 1)]
    if (C.maxtasksperchild is None):
        p = Pool(processes=C.kernels)
    else:
        p = Pool(processes=C.kernels, maxtasksperchild=C.maxtasksperchild)
    for inst in instruments_d:
        p.apply_async(LocalDatasetProvider.cache_walker, args=(inst, start_time, end_time, freq, column_names))
    p.close()
    p.join()