python - 如何能有效的将多个网页访问任务 按照一定时间间隔调度?

查看:120
本文介绍了python - 如何能有效的将多个网页访问任务 按照一定时间间隔调度?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

比如我有1000个网页需要访问,每个页面可能需要5s时间才能访问完成,计划是每秒发起10个.

目前的实现方法是采用线程池,但是遇到一些问题。

1.因为页面访问有延迟为了满足每秒的固定数量请求发起,我需要将线程池的数量设的很大。
例如我现在情况可能需要把线程池大小设置到10*5=50个?
如果我没记错,在线程数量变多的情况下实际上因为上下文切换会造成资源浪费。

2.如何较为精确的发起每秒的任务调度。目前采用的是time.sleep(1)的方式,感觉好搓。

求教
有没更有效可靠的方式实现我的需求?

解决方案

你说的条件自相矛盾的。

  1. 每个请求的响应的时间不确定。(5秒也只是可能,除非你说做了 5s 的 timeout 处理)
  2. 每秒 10 个请求,假设 10 个线程并发,那么因为响应时间不确定,这 10 个线程的释放时间就不确定。
  3. 你又做了一个线程池,限定了总数,因为每个线程释放时间不确定,所有你不可能做到每秒 10 个请求。

所以,你要么

  • 定每秒 10 个请求,不限定线程总数。

要么

  • 定 N 个线程,每秒多少个请求不确定。

这篇关于python - 如何能有效的将多个网页访问任务 按照一定时间间隔调度?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆