Я столкнулся со следующей структурной проблемой:
Я хочу создать класс обработчика данных, который будет хранить серию импортируемых мной финансовых данных. (Это может занять время, поэтому я хотел бы сохранить его в атрибуте класса 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 дальше).
И наконец, правильно ли я приближаюсь к этому?