当前位置: 首页 > 面试题库 >

urllib2的多处理没用吗?

楮庆
2023-03-14
问题内容

我最近尝试使用多处理模块(和它的)来加速一个小工具(使用urllib2将请求发送到(非官方)twitter-button-count-url(> 2000
url)并解析其结果)工人池)。我在这里阅读了一些有关多线程(与标准的非线程版本相比,它使整个过程变慢)和多处理的讨论,但是我找不到(可能非常简单)问题的答案:

您可以通过多处理来加速url调用吗,还是不是像网络适配器那样的瓶颈?我看不到例如urllib2-open-
method的哪一部分可以并行化以及应该如何工作…

编辑:这是我要加快的请求和当前的多重处理设置:

 urls=["www.foo.bar", "www.bar.foo",...]
 tw_url='http://urls.api.twitter.com/1/urls/count.json?url=%s'

 def getTweets(self,urls):
    for i in urls:
        try:
            self.tw_que=urllib2.urlopen(tw_url %(i))
            self.jsons=json.loads(self.tw_que.read())
            self.tweets.append({'url':i,'date':today,'tweets':self.jsons['count']})
        except ValueError:
            print ....
            continue
    return self.tweets

 if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=4)            
    result = [pool.apply_async(getTweets(i,)) for i in urls]
    [i.get() for i in result]

问题答案:

看看看看GEVENT具体的例子:concurrent_download.py。它比多处理和多线程要快得多,并且可以轻松处理数千个连接。



 类似资料:
  • 问题内容: 我正在urllib2的urlopen中使用timeout参数。 我如何告诉Python,如果超时到期,应该引发自定义错误? 有任何想法吗? 问题答案: 在极少数情况下要使用。这样做会捕获可能很难调试的 任何 异常,并且会捕获包括和在内的异常,这些异常会使您的程序恼人。 最简单的说,您会发现: 以下内容应捕获连接超时时引发的特定错误:

  • 问题内容: 调用指向从RSS源中获取的文章的链接会导致以下错误: urllib2.HTTPError:HTTP错误301:HTTP服务器返回了重定向错误,这将导致无限循环。最后30x错误消息是:永久移动 根据文档,urllib2支持重定向。 在Java上,只需调用即可解决问题 如何使用Python解决? 更新 我遇到的链接有问题: http://feeds.nytimes.com/click.ph

  • 问题内容: 我打开网址: 我想做的是用同样的方式连接到我在某处告诉我的代理: 但这也不起作用。 我知道urllib2具有类似代理处理程序的功能,但是我不记得该功能了。 问题答案:

  • 问题内容: 我打开网址: 我想做的就是以相同的方式连接到我在某处告诉我的代理: 但这也不起作用。 我知道urllib2具有类似代理处理程序的功能,但是我无法回忆起该功能。 问题答案:

  • 我是Spring批处理的新手,我只想问如何从多行结果集中检索数据。我有以下场景: > 有两个不同的表说员工 使用时,我只能创建一个工资单子级,但该表可能有多个子级。请帮助...

  • 我使用的是Spring Batch 2.1.8。释放我有一个文件,它由一些头信息和一些需要处理的记录组成。 我有一个使用面向块处理的步骤。该步骤包含ItemReader和ItemWriter的实现。ItemReader实现是线程安全的,而ItemWriter不是。 我想在处理(或写入)任何记录之前使用标题信息。在继续使用面向块的处理时,如何确保这一点? 建议的解决方案:一种解决方案可以是编写一个预