auto_trade_sys/docs/并发数优化说明.md
薇薇安 c3a14f0f1a a
2026-01-25 16:53:40 +08:00

115 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 并发数优化说明
## 并发数的含义
**并发数Semaphore(3)** 是指:**单个账户扫描时,同时分析多少个交易对**
### 举例说明
假设扫描250个交易对初步筛选后需要详细分析50个交易对
**并发数3**
- 同时最多分析3个交易对获取K线、计算技术指标
- 其他47个交易对排队等待
- 分析完3个后继续分析下3个以此类推
**并发数5**
- 同时最多分析5个交易对
- 其他45个交易对排队等待
- 分析完5个后继续分析下5个以此类推
### 不是指用户进程数
- **用户进程数**每个账户有1个进程这是固定的
- **并发数**:单个账户扫描时,同时分析多少个交易对(这是可以调整的)
---
## 为什么要降低并发数
### 多用户场景
如果4个账户同时扫描
**并发数3**
- 账户1同时分析3个交易对
- 账户2同时分析3个交易对
- 账户3同时分析3个交易对
- 账户4同时分析3个交易对
- **总共最多12个并发请求**
**并发数5**
- 账户1同时分析5个交易对
- 账户2同时分析5个交易对
- 账户3同时分析5个交易对
- 账户4同时分析5个交易对
- **总共最多20个并发请求**
**结论**:降低并发数可以减少系统总压力
---
## 单用户场景
如果只有一个账户:
**并发数3**
- 扫描耗时约20-30秒较慢
**并发数5**
- 扫描耗时约15-25秒较快
**结论**如果只有一个账户保持并发数5可以提升扫描速度
---
## 建议
### 当前情况
如果你现在只有一个账户,建议:
1. **保持并发数5**:提升单个账户的扫描速度
2. **如果后续增加用户**再降低到3确保系统稳定
### 如何调整
**文件**`trading_system/market_scanner.py`
**位置**第107行
```python
# 当前(多用户优化)
semaphore = asyncio.Semaphore(3) # 最多3个并发请求
# 单用户建议
semaphore = asyncio.Semaphore(5) # 最多5个并发请求
```
---
## 性能对比
### 单用户场景
| 并发数 | 扫描耗时 | 系统压力 |
|--------|----------|----------|
| 3 | 20-30秒 | 低 |
| 5 | 15-25秒 | 低 |
### 多用户场景4个账户
| 并发数 | 总并发请求 | 系统压力 |
|--------|------------|----------|
| 3 | 最多12个 | 中等 |
| 5 | 最多20个 | 较高 |
---
## 总结
1. **并发数**:单个账户扫描时,同时分析多少个交易对
2. **不是用户进程数**每个账户仍然只有1个进程
3. **单用户建议**保持并发数5提升扫描速度
4. **多用户建议**降低到3确保系统稳定