一、首先想到的是for循环,单线程爬取每个url,但是如果有url出现了问题,后面的url就得等,性能低。

二、我们考虑线程池的问题,下面我们定义了线程池里面最多10个任务,也就是说最多同一时间只能有10个爬行任务,这样的话就是自己干自己的互相不影响,加上主线程的话是n+1个线程,缺点也很明显,耗时最长时间取决于最长的那个任务使用的时间。pool.shutdown(True)主线程等待子线程执行完城后,再退出。

import requests
from concurrent.futures import ThreadPoolExecutor

def fetch_request(url):
    requests.get(url)

pool = ThreadPoolExecutor(10)
url_list = [
    'https://www.baidu.com',
    'https//:www.douban.com'
]

for url in url_list:
    pool.submit(fetch_request,url)


pool.shutdown(True)
简单线程池

相关文章:

  • 2021-12-29
  • 2021-08-21
  • 2022-01-18
  • 2021-07-24
  • 2021-10-21
  • 2021-11-18
  • 2022-12-23
  • 2021-11-27
猜你喜欢
  • 2022-01-03
  • 2021-12-19
  • 2021-12-11
  • 2021-08-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案