面试题答案
一键面试网络爬虫项目
- 多线程合理性:
- I/O 密集型:网络爬虫主要是进行网络 I/O 操作,如请求网页、下载数据。Python 的多线程在 I/O 密集型任务中能有效利用时间片,在等待网络响应的时间里切换到其他线程工作,提高整体效率。
- 资源开销小:线程共享进程的资源,创建和销毁线程的开销相对较小,适合快速频繁地发起网络请求任务。
- 多进程合理性:
- 隔离性:如果爬虫过程中某个网页请求或解析出现异常,多进程可以避免影响其他进程的运行,增强程序稳定性。但相对多线程,创建进程开销大,资源占用多。
复杂数值计算项目
- 多线程合理性:
- 不合理:Python 的全局解释器锁(GIL)限制,同一时刻只有一个线程能执行 Python 字节码,对于 CPU 密集型的数值计算,多线程无法真正利用多核 CPU 优势,反而会因为线程切换带来额外开销。
- 多进程合理性:
- CPU 密集型:多进程可以充分利用多核 CPU 资源,每个进程有独立的 Python 解释器和内存空间,能并行执行数值计算任务,大大提高计算速度。
- 稳定性:不同进程间相互独立,一个进程出现问题不会影响其他进程,适合复杂计算避免因局部错误导致整体崩溃。