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

如何为股票处理脚本添加多线程/多进程以提升运行效率?

给股票处理脚本提速的多任务方案

兄弟,单线程处理所有股票耗35秒确实有点慢,用并行/并发处理绝对能帮你把时间打下来!Python里有几个实用的库,我给你唠唠具体怎么用:

1. 多线程:concurrent.futures.ThreadPoolExecutor(最适合你的场景)

你的脚本里大部分是API请求、读写文件这类IO密集型任务,多线程刚好能发挥优势——线程切换开销小,能同时发起多个网络请求,不用等一个请求完了再处理下一个。
给你改个代码片段参考:

from concurrent.futures import ThreadPoolExecutor
import schedule
import time
# 保留你原来的其他导入

# 把单只股票的处理逻辑抽成单独函数
def process_one_stock(stock_code):
    # 这里初始化Kite连接(注意:如果Kite的连接对象不能跨线程,就在这里每次初始化)
    kite = KiteConnect(api_key='YOUR_API')
    kite.set_access_token('YOUR_ACCESSTOKEN')
    # 写单只股票的处理逻辑:比如拉历史数据、计算指标、存CSV/JSON
    stock_data = kite.historical_data(stock_code, "2024-01-01", "2024-05-20", "day")
    # 后续的数据分析、文件写入操作都放这里

def job():
    # 假设你有个要处理的股票列表
    my_stocks = ["RELIANCE", "TCS", "INFY", "HDFCBANK"]  # 换成你的股票池
    # 开线程池,max_workers根据API限流设置,比如设5-10都可以
    with ThreadPoolExecutor(max_workers=8) as executor:
        executor.map(process_one_stock, my_stocks)

# 原来的调度逻辑不变
schedule.every().day.at("09:15").do(job)
while True:
    schedule.run_pending()
    time.sleep(1)

提醒下:别把线程数开太大,要是API有请求频率限制,容易被限流封号,先测着来~

2. 多进程:concurrent.futures.ProcessPoolExecutor(适合CPU密集场景)

如果你的脚本里有大量复杂计算(比如自定义的技术指标、机器学习模型预测),多进程能绕过Python的GIL锁,把多核CPU的性能用起来。用法和线程池差不多:

from concurrent.futures import ProcessPoolExecutor

def process_one_stock(stock_code):
    # 单只股票处理逻辑,和上面一致
    pass

def job():
    my_stocks = ["RELIANCE", "TCS", "INFY"]
    # max_workers一般设成你电脑的CPU核心数,比如4核就设4
    with ProcessPoolExecutor(max_workers=4) as executor:
        executor.map(process_one_stock, my_stocks)

注意:多进程的内存开销比线程大,要是只是IO操作,线程池足够了

3. 额外优化小技巧

  • 批量请求优先:如果KiteConnect支持批量获取多只股票数据,直接用批量接口,比单只请求快N倍
  • 缓存重复数据:比如某些基础数据每天都用,存到本地缓存里,不用每次都请求API
  • 砍掉冗余操作:你脚本里导入了matplotlib.pyplot,要是后台处理不用画图,直接删掉,能省点加载时间

内容的提问来源于stack exchange,提问作者Kiran Kumar Reddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:10:20