分批处理:将遍历的数据切分为几个批次,每次只操作一部分,避免一次性加载所有数据导致的连接压力。
时间: 2024-10-21 20:09:57 浏览: 28
JavaScript如何一次性展示几万条数据
5星 · 资源好评率100%
分批处理是一种优化大数据集处理的技术,其核心思想是将大规模任务分解成较小、可管理的部分,逐一处理。在你提供的代码场景中,就是通过将`stock_basic`表中的股票代码列表分成多个小批次,每次只处理一批,比如每批处理100个股票代码。
以下是分批处理的示例代码:
```python
batch_size = 100 # 设置批次大小
current_batch = [] # 当前批次的股票代码列表
for index, row in df.iterrows():
if len(current_batch) < batch_size or index == df.shape[0]: # 到达批量结束或已处理完所有数据
# 提交当前批次的查询任务到线程池或异步任务队列
# 注意这里你需要使用异步函数或其他适合的并发工具
# 考虑到你之前使用的是线程池,我们可以继续使用类似的方式
if current_batch:
submit_tasks_to_pool(current_batch)
# 清空当前批次并将新的股票代码加入
current_batch = [row['ts_code']]
else:
current_batch.append(row['ts_code'])
# 处理最后一个批次,如果还有剩余
if current_batch:
submit_tasks_to_pool(current_batch)
# 定义submit_tasks_to_pool函数用于提交任务到线程池
def submit_tasks_to_pool(batch):
with concurrent.futures.ThreadPoolExecutor() as executor:
for ts_code in batch:
executor.submit(fetch_moneyflow, ts_code)
```
在这个版本中,我们不再一次性读取全部股票代码,而是逐批读取并处理,降低了对数据库连接的需求,有助于解决“Too many connections”错误。
阅读全文