# 并发数优化说明 ## 并发数的含义 **并发数(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,确保系统稳定