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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 目标
|
|
|
|
|
本节使用一个爬虫任务来展示如何追求代码的性能 。
|
|
|
|
|
充分理解线程、协程、进程、同步、异步、阻塞、非阻塞等概念,并能够根据具体场景选择合适的并发模型。
|
|
|
|
|
主线问题:如何解决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个进程和线程,而协程是单线程,所以协程的性能最好。
|
|
|
|
|
另外,异步的性能最差,可能是由于异步的并发模型需要频繁地切换线程,导致性能下降。
|
|
|
|
|
总的来说,协程的性能最好,多线程和多进程的性能介于两者之间,普通做法的性能最差。
|
|
|
|
|
|
|
|
|
|
# 总结
|
|
|
|
|
协程的性能最好,多线程和多进程的性能介于两者之间,普通做法的性能最差。
|