You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中不使用requests,多线程加速fundamentalanalysis的API调用?

解决方案

可以用Python的concurrent.futures.ThreadPoolExecutor实现多线程请求,API调用属于IO密集型任务,多线程能有效减少等待时间,同时完全保留fundamentalanalysis模块的使用。

代码示例

from ApiStuff import ApiStuff
import fundamentalanalysis as fa
import pickle
from concurrent.futures import ThreadPoolExecutor, as_completed

# 加载标普500代码
tickers = pickle.load(open('S&P500_TICKERS.dat', 'rb'))
api_key = ApiStuff.api_key
data_from_tickers = []

# 定义单个ticker的处理函数
def fetch_balance_sheet(ticker):
    try:
        return fa.balance_sheet_statement(ticker, api_key, period="annual")
    except Exception as e:
        print(f"获取{ticker}数据失败: {str(e)}")
        return None

# 线程池并发请求,建议根据API速率限制调整max_workers
with ThreadPoolExecutor(max_workers=10) as executor:
    # 提交所有任务
    futures = {executor.submit(fetch_balance_sheet, ticker): ticker for ticker in tickers}
    # 处理返回结果
    for future in as_completed(futures):
        result = future.result()
        if result is not None:
            data_from_tickers.append(result)

关键注意事项

  • API速率限制:先确认你使用的API的请求频率限制,调整max_workers的数值(比如API限制每秒5次请求,就将max_workers设为5左右),避免触发限流或账号封禁。
  • 异常处理:必须为单个请求添加异常捕获,防止某一个ticker请求失败导致整个程序崩溃。
  • 多线程优先级:因为是IO密集型任务,多线程的资源开销远低于多进程,足够满足加速需求,无需使用多进程方案。

内容的提问来源于stack exchange,提问作者MEEP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:22:49