我试图从IEX的云服务器发出一些简单的API请求,以获取一些证券的收盘价。我成功地提取了数据,但这需要花费很长时间,而且数据量也不多。如果有人能帮助我重组代码,使其更快、更高效,那将是一个巨大的帮助。下面是我到目前为止所掌握的情况。。非常感谢各位
for i, row in Universe.iterrows():
try:
request = urllib.request.urlopen('https://cloud.iexapis.com/stable/stock/'+Universe['ticker'][i]+'/chart/date/'+Px_1+'?chartByDay=true&token=TOKEN').read()
data = json.loads(request)
Universe['Px_1'][i] = data[0]['close']
except:
Universe['Px_1'][i] = np.nan
使用
requests
包创建一个可重用的持久连接,这将使每个请求更快:您还可以使用线程池并行运行请求:
但是会话是否可以跨线程使用还不完全清楚,您可能需要使用一些特殊的东西,或者返回到
requests.get
。服务器可能对如此高的请求率不满意还要注意
except
,因为它可能会悄悄地吞噬代码中的bug相关问题 更多 >
编程相关推荐