2.7 KiB
2.7 KiB
并发数优化说明
并发数的含义
并发数(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可以提升扫描速度
建议
当前情况
如果你现在只有一个账户,建议:
- 保持并发数5:提升单个账户的扫描速度
- 如果后续增加用户:再降低到3,确保系统稳定
如何调整
文件:trading_system/market_scanner.py
位置:第107行
# 当前(多用户优化)
semaphore = asyncio.Semaphore(3) # 最多3个并发请求
# 单用户建议
semaphore = asyncio.Semaphore(5) # 最多5个并发请求
性能对比
单用户场景
| 并发数 | 扫描耗时 | 系统压力 |
|---|---|---|
| 3 | 20-30秒 | 低 |
| 5 | 15-25秒 | 低 |
多用户场景(4个账户)
| 并发数 | 总并发请求 | 系统压力 |
|---|---|---|
| 3 | 最多12个 | 中等 |
| 5 | 最多20个 | 较高 |
总结
- 并发数:单个账户扫描时,同时分析多少个交易对
- 不是用户进程数:每个账户仍然只有1个进程
- 单用户建议:保持并发数5,提升扫描速度
- 多用户建议:降低到3,确保系统稳定