使用Python的binance.client获取BTC交易对生成价格字典的优化方案
Binance BTC交易对价格获取代码优化方案
原代码问题分析
你当前代码执行慢、逻辑冗余的核心原因有2个:
- 循环内逐个调用
client.get_avg_price()接口,每查询1个交易对就要发起1次API请求,遇到API频率限制还会自动等待,上百个BTC交易对自然要跑1分钟左右 - 额外维护了2个列表存储交易对、价格,最后再合并为字典,完全可以直接在遍历过程中生成目标字典
优化方案
优先用Binance公开的批量查询接口,1次请求就能拿到所有交易对的价格数据,执行耗时可以压缩到1秒以内,同时简化逻辑直接生成字典。
优化后代码(获取最新成交价)
def get_btc_pair_prices(): # 批量获取所有交易对最新成交价,仅发起1次API请求 all_tickers = client.get_all_tickers() btc_price_dict = {} for ticker in all_tickers: symbol = ticker["symbol"] # 判断是否为BTC计价交易对(后缀为BTC),比切片判断逻辑更清晰 if symbol.endswith("BTC"): btc_price_dict[symbol] = ticker["price"] return btc_price_dict
如果需要保留平均价格需求
如果你必须使用平均价格数据,也可以用批量24小时行情接口替代逐次请求,同样只发1次请求:
def get_btc_pair_avg_prices(): # 批量获取所有交易对24小时行情,内含平均价格字段 all_24h_ticker = client.get_ticker() btc_avg_price_dict = {} for ticker in all_24h_ticker: symbol = ticker["symbol"] if symbol.endswith("BTC"): btc_avg_price_dict[symbol] = ticker["weightedAvgPrice"] return btc_avg_price_dict
内容的提问来源于stack exchange,提问作者Tomc37
相关产品推荐
相关产品推荐

