发布时间:2022-08-22 02:39 已有: 人阅读
io密集:大部分时间都花在程序上io等待,比如网络io,即http请求等,磁盘io,即文件读写等。 cpu密集: 程序大部分时间都花在了cpu如文本处理、数值计算等。 如果是io密集,然后你可以通过线程池或协程池并发这部分功能,从而提高速度。 但是这里的网络io前提是你的带宽不是你爬虫的瓶颈。 如果是cpu如果密集,这部分工作可以通过流程池并行处理,从而提高速度。多流程意味着你的机器是多核的。 但也有一些值得优化的地方,比如一些库的选择,比如beautifulsoup虽然很方便,但是有更快的实现方法,比如selectolax速度要快得多。 如果你不能判断,那么先多线程,再多进程。 如果单机解决不了,就用工作队列,比如celery。多机并行,肯定会提高速度,而且是水平扩展,当然,这必须让你的任务分布式。 |