Как ограничить десятичные дроби, которые я извлекаю при извлечении данных из базы данных?

Я пытаюсь извлечь биржевые данные, используя библиотеку 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)
→ Ссылка