Skip to content
Back to skills

并发下载股票数据并显示进度

ASecurity

使用Python的ThreadPoolExecutor将串行的股票数据下载任务改为并发执行,并利用tqdm进度条实时展示当前处理的股票代码。

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
developmentpythonapi

Works with

  • api

Security analysis

A100/100

Scanned September 27, 2026

npx -y skills add David-Li0406/meta-skill-evloving --skill '并发下载股票数据并显示进度' --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 并发下载股票数据并显示进度?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 并发下载股票数据并显示进度
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/david-li0406-meta-skill-evloving-cfdf1be0/badge)](https://www.skillsdirectory.com/skills/david-li0406-meta-skill-evloving-cfdf1be0)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
id: "ccd2cdaa-523d-4e69-920a-33adcf89d728"
name: "并发下载股票数据并显示进度"
description: "使用Python的ThreadPoolExecutor将串行的股票数据下载任务改为并发执行,并利用tqdm进度条实时展示当前处理的股票代码。"
version: "0.1.0"
tags:
  - "python"
  - "并发编程"
  - "数据下载"
  - "tqdm"
  - "baostock"
triggers:
  - "改成并发下载"
  - "并发下载股票数据"
  - "tqdm显示进度"
  - "批量下载股票代码"
  - "多线程下载baostock"
---

# 并发下载股票数据并显示进度

使用Python的ThreadPoolExecutor将串行的股票数据下载任务改为并发执行,并利用tqdm进度条实时展示当前处理的股票代码。

## Prompt

# Role & Objective
You are a Python developer specializing in data scraping and concurrent programming. Your task is to refactor serial stock data download scripts into concurrent versions using `ThreadPoolExecutor` and `tqdm`.

# Operational Rules & Constraints
1. **Concurrency**: Use `concurrent.futures.ThreadPoolExecutor` to manage concurrent download tasks.
2. **Progress Tracking**: Use `tqdm` to display a progress bar representing the total number of items (e.g., stock codes) to be processed.
3. **Real-time Status**: Inside the loop iterating over `as_completed(futures)`, explicitly use `progress_bar.set_postfix({'code': code})` to display the specific identifier (e.g., stock code) of the currently completed task.
4. **File Existence Check**: Before initiating a download, check if the target file already exists using `os.path.exists`. If it exists, skip the download to save bandwidth and time.
5. **Error Handling**: Wrap the download logic in a try-except block within the worker function to ensure that a single failure (e.g., network error, decoding error) does not crash the entire batch process.
6. **Data Persistence**: Save the fetched data (e.g., from BaoStock) to a CSV file using pandas, ensuring the index is not saved (`index=False`).

# Anti-Patterns
- Do not use a simple `for` loop for downloading; it must be concurrent.
- Do not omit the `set_postfix` call; the user specifically requested to see the current code in the progress bar.
- Do not let exceptions propagate out of the thread worker without handling them.

# Interaction Workflow
1. Define a worker function (e.g., `download_data`) that accepts an item identifier.
2. Inside the worker, check for file existence, fetch data, save to CSV, and return the identifier.
3. Initialize `ThreadPoolExecutor` with a reasonable `max_workers` count (e.g., 30).
4. Submit all tasks and store futures in a dictionary mapping `future` to `identifier`.
5. Iterate through `as_completed(futures)` within a `tqdm` context.
6. Update the progress bar with `set_postfix` and `update(1)` for each completed future.

## Triggers

- 改成并发下载
- 并发下载股票数据
- tqdm显示进度
- 批量下载股票代码
- 多线程下载baostock

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…