我试图用多线程下载图像,它在python中的max_count有限。
每次启动download_thread时,我都不管它并激活另一个。我希望下载过程可以在5s结束,这意味着如果打开网址的成本超过5s,下载失败。
但我怎么知道它并停止失败的线程???
答案 0 :(得分:3)
你能说出你使用的是哪个版本的python吗? 也许你也可以发布一个片段。 从Python 2.6开始,urllib2.urlopen中添加了超时。 希望这会帮助你。它来自python docs。
urllib2.urlopen(url [,data] [, 超时])打开网址,可以 是一个字符串或一个请求 对象
警告HTTPS请求不执行任何操作 验证服务器的 证书。数据可以是字符串 指定要发送到的其他数据 服务器,如果没有这样的数据,则为None 需要。目前HTTP请求是 唯一使用数据的人; HTTP 请求将是POST而不是 GET是数据参数的时候 提供。数据应该是缓冲区 标准 应用程序/ x-WWW窗体-urlencoded 格式。 urllib.urlencode() 函数采用映射或序列 2元组并返回一个字符串 这种格式。 urllib2模块发送 HTTP / 1.1请求 连接:包括关闭标题。
可选的超时参数 指定以秒为单位的超时 像这样的阻止操作 连接尝试(如果未指定, 全局默认超时设置 将会被使用)。这实际上只是 适用于HTTP,HTTPS和FTP 连接。
此函数返回类似文件 对象有两个额外的方法:
geturl() - 返回的URL 检索资源,常用于 确定是否遵循重定向 info() - 返回元信息 的页面,如标题,在 mimetools.Message实例的形式 (请参阅HTTP标头的快速参考) 在错误时引发URLError。
请注意,如果不是,则可以返回None 处理程序处理请求(但是 默认安装的全局 OpenerDirector使用UnknownHandler 确保这种情况永远不会发生。)
另外,默认安装 ProxyHandler确保请求 通过代理处理时 他们已经确定了。
在2.6版中更改:超时为 加入。