Используйте пакет requests
для создания многоразового постоянного соединения, которое должно ускорять каждый запрос:
import requests
session = requests.Session()
for i, row in Universe.iterrows():
try:
data = session.get(url).json()
Universe['Px_1'][i] = data[0]['close']
except:
Universe['Px_1'][i] = np.nan
Вы также можете выполнять запросы параллельно, используя пул потоков:
from multiprocessing.dummy import Pool
def get_px1(ticker):
url = 'https://cloud.iexapis.com/stable/stock/' + ticker + '/chart/date/' + Px_1 + '?chartByDay=true&token=TOKEN'
try:
data = session.get(url).json()
return data[0]['close']
except:
return np.nan
Universe['Px_1'] = Pool(20).map(get_px1, Universe.ticker)
Но не совсем ясно, может ли сеанс использоваться между потоками, возможно, вам придется использовать что-то особенное или вернуться к requests.get
. И сервер может быть недоволен такой высокой частотой запросов.
Также остерегайтесь этого except
, поскольку он может молча проглатывать ошибки в вашем коде.