Как ограничить десятичные дроби, которые я извлекаю при извлечении данных из базы данных?
Я пытаюсь извлечь биржевые данные, используя библиотеку yahoo_fin python.
Я хотел бы получить все акции в S&P500, которые соответствуют определенным критериям. К сожалению, при звонке в yahoo_fin я получаю обратно 64-битный номер, что делает работу программы чрезвычайно медленной. Есть ли способ ограничить объем данных, которые я извлекаю, взяв только 2 знака после запятой? Пожалуйста парни помогите хоть какой то пример((
вот мой код
from yahoo_fin import stock_info as si
spy = si.tickers_sp500()
for i in spy:
if si.get_live_price(i) < 50.00:
print(i)
Это печатает тикеры, которые я хотел бы рассмотреть, но очень медленно, я полагаю, из-за больших 64-битных чисел, которые он запрашивает.
Ответы (1 шт):
Вот грубый пример того, как вы можете реализовать многопоточность. Выполнение этого занимало у меня около 10-15 секунд, тогда как другой метод занимал много минут
from yahoo_fin import stock_info as si
import threading
global price_list
price_list = []
# this will get called many times
def print_low_ticks(chunk):
global price_list
for i in chunk:
live_price = si.get_live_price(i)
if live_price < 50.00:
price_list.append(i)
spy = si.tickers_sp500()
threads = []
# create threads that only process 10 values
for i in range(len(spy)):
if ((i % 10 == 0) or (i == 0)):
x = threading.Thread(target=print_low_ticks,
args=([spy[i:i+10]]),
daemon=False)
threads.append(x)
x.start()
# wait for all threads to finish
for thread in threads:
thread.join()
print(price_list)