Можно ли вызвать класс python, который использует concurrent.futures внутри ноутбука jupyter? - PullRequest
0 голосов
/ 16 июня 2020

Я столкнулся со следующей структурной проблемой:

Я хочу создать класс обработчика данных, который будет хранить серию импортируемых мной финансовых данных. (Это может занять время, поэтому я хотел бы сохранить его в атрибуте класса cache, чтобы избежать повторной загрузки)

class DataHandler:
    self.cache = {} # store financial data for fast retrieval

def _create_multiple_processes_for_fast_io(symbs):
    if __name__ == "__main__": 
        pool = concurrent.futures.ProcessPoolExecutor(max_workers=4)

        # --> func is an IO function
        for item in pool.map(func, symbs):
            symb, series = item
            self.cache[symb] = series # save symbol data

def download_data(self, symbs)
    # download NEW stocks
    symbs_dwld = []
    for symb in symbs:
        if symb not in self.cache:
            symb_dwld.append(symb)

    # invoke multiple processes to read .csvs
    self._create_multiple_processes_for_fast_io(symb_dwld)

Проблема в том, что мы не можем вызвать concurrent.futures из jupyter notebook.

Это проблема, потому что я не знаю, сколько символов мне нужно загрузить заранее (не могу вызвать это через командную строку).

У меня вопрос, есть ли способ вызвать этот класс в записной книжке? ( name == " main " в настоящее время не работает), или можно ли вызывать функцию concurrent.futures несколько раз, а не только один раз (например, добавляя символы как I go дальше).

И наконец, правильно ли я приближаюсь к этому?

...