Как непрерывно сохранять локально большие данные из пошаговой потоковой передачи, не перегружая оперативную память? ⇐ Python
Как непрерывно сохранять локально большие данные из пошаговой потоковой передачи, не перегружая оперативную память?
Я хочу сохранить локально все тиковые данные от брокера, не перегружая оперативную память. Трансляция начинается в воскресенье и заканчивается в первые часы субботы. В любое время в течение недели я хочу иметь возможность загрузить файл с жесткого диска и проанализировать «пока что» обновления.
Иногда количество тиков может превышать 1000 или даже 10 000 в секунду. Я хочу подписаться на 40 инструментов (например, EURUSD).
Итак, как лучше всего это сделать в Python?
Вот что я пробовал:
Любой фрейм данных pandas:
df = pd.DataFrame(columns=['Time_sent', 'Time_received', 'Instrument', 'Bid', 'Ofr']) И затем при любом обновлении я объединяю новую строку:
df = pd.concat([df, pd.DataFrame([[datetime.fromtimestamp(int(update.get_time())/1000), дата-время.сейчас(), update.get_instrument(), update.get_bid_value(), update.get_ofr_value()]], columns=df.columns)], ignore_index=True) И наконец, обновляю галочки:
df.to_pickle('ticks.pkl') Но у него есть два недостатка: он излишне перегружает оперативную память и при любом обновлении перезаписывает файл Tickets.pkl, поэтому, если он большой, требуется много времени, и я не могу так легко получить к нему доступ в любое время.
>
Либо json:
Я определяю функцию:
defappend_record(запись): с open('ticks.json', 'a') как f: json.dump(запись, е) f.write(os.linesep) И потом, каждый раз, когда я устанавливаю обновление локально:
append_record({'Time_sent': update.get_time(), «Time_received»: datetime.now().timestamp() * 1000, «Инструмент»: update.get_instrument(), «Ставка»: get_bid_value(), 'Ofr': get_ofr_value()}) Но у него есть два недостатка: файл (ticks.json) намного больше, чем Tickets.pkl, и я не думаю, что это лучший и самый современный метод Python.
Какой совет? Может быть, мне стоит использовать базу данных SQL (SQLite) или h5? Как лучше всего сделать то, что я хочу? В любом случае мне не следует перезагружать/перечитывать сохраненный файл, дописывать его и потом снова сохранять. Это должно быть что-то поумнее.
Я хочу сохранить локально все тиковые данные от брокера, не перегружая оперативную память. Трансляция начинается в воскресенье и заканчивается в первые часы субботы. В любое время в течение недели я хочу иметь возможность загрузить файл с жесткого диска и проанализировать «пока что» обновления.
Иногда количество тиков может превышать 1000 или даже 10 000 в секунду. Я хочу подписаться на 40 инструментов (например, EURUSD).
Итак, как лучше всего это сделать в Python?
Вот что я пробовал:
Любой фрейм данных pandas:
df = pd.DataFrame(columns=['Time_sent', 'Time_received', 'Instrument', 'Bid', 'Ofr']) И затем при любом обновлении я объединяю новую строку:
df = pd.concat([df, pd.DataFrame([[datetime.fromtimestamp(int(update.get_time())/1000), дата-время.сейчас(), update.get_instrument(), update.get_bid_value(), update.get_ofr_value()]], columns=df.columns)], ignore_index=True) И наконец, обновляю галочки:
df.to_pickle('ticks.pkl') Но у него есть два недостатка: он излишне перегружает оперативную память и при любом обновлении перезаписывает файл Tickets.pkl, поэтому, если он большой, требуется много времени, и я не могу так легко получить к нему доступ в любое время.
>
Либо json:
Я определяю функцию:
defappend_record(запись): с open('ticks.json', 'a') как f: json.dump(запись, е) f.write(os.linesep) И потом, каждый раз, когда я устанавливаю обновление локально:
append_record({'Time_sent': update.get_time(), «Time_received»: datetime.now().timestamp() * 1000, «Инструмент»: update.get_instrument(), «Ставка»: get_bid_value(), 'Ofr': get_ofr_value()}) Но у него есть два недостатка: файл (ticks.json) намного больше, чем Tickets.pkl, и я не думаю, что это лучший и самый современный метод Python.
Какой совет? Может быть, мне стоит использовать базу данных SQL (SQLite) или h5? Как лучше всего сделать то, что я хочу? В любом случае мне не следует перезагружать/перечитывать сохраненный файл, дописывать его и потом снова сохранять. Это должно быть что-то поумнее.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Построить непрерывно непрерывно в React Native при запуске на эмуляторе
Anonymous » » в форуме Android - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-