You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# 目标
本节使用一个爬虫任务来展示如何追求代码的性能 。
充分理解线程、协程、进程、同步、异步、阻塞、非阻塞等概念,并能够根据具体场景选择合适的并发模型。
主线问题: 如何解决IO和计算速度不匹配、如何任务分解、分发和协作 。
# 任务
# 讨论分析
普通做法连续进行了五次测试, 时间分别为34.231s、34.091s、34.164s、34.226s、33.958s, 平均时间为34.134s
多进程(进程数=5) 连续进行了五次测试, 时间分别为7.719s、7.716s、7.690s、7.730s、7.711s, 平均时间为7.7132s
多线程(线程数=5) 连续进行了五次测试, 时间分别为7.185s、7.964s、6.983s、6.969s、7.035s, 平均时间为7.2272s
协程连续进行了五次测试, 时间分别为3.775s、3.807s、3.733s、3.824s、3.744s, 平均时间为3.776s
异步连续进行了五次测试, 时间分别为6.975s、7.675s、7.018s、7.032s、7.049s, 平均时间为7.1498s
注: 为保证公平性, 每一次Post请求后休眠3秒
可以看出,协程的性能最好,普通做法的性能最差,多线程、多进程和异步的性能介于两者之间。
考虑到多进程和多线程是故意开的5个进程和线程, 而协程是单线程, 所以协程的性能最好。
另外,异步的性能最差,可能是由于异步的并发模型需要频繁地切换线程,导致性能下降。
总的来说,协程的性能最好,多线程和多进程的性能介于两者之间,普通做法的性能最差。
# 总结
协程的性能最好,多线程和多进程的性能介于两者之间,普通做法的性能最差。