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