Ben
1. 多线程适合处理多个独立的子任务, 如果n是列表, 那么多线程/多进程可以大大减少执行时间. 但是针对单个数字n的计算, 多线程计算时变量n, 可以视为被竞争的资源, 会lock住非执行线程, GIL机制会check_interval, 强制更换为其他线程, 额外增加了执行时间. 形象来说, 就是一个人要干的活, 非要几个人一起干, 一个人干的时候. 其他人只能干看着, GIL换人时, 还要额外的时间.
2. 每一种设计都是为了解决问题设计的, I/O慢时使用asyncio, 也就是GIL适合的场景. 但是I/O快时, 适合多线程, 此时GIL能去掉就好了