【问题标题】:Making 5000 Requests Fast Python MultiThreading快速 Python 多线程处理 5000 个请求
【发布时间】:2018-12-26 00:19:14
【问题描述】:

我有 5000 个 url 来发出请求并检查每个 url 源中的特定单词

我想尽快完成,我是 python 新手

这是我的代码

import requests
def checkurl(url):
    r = requests.get(url)
    if 'House' in r.text:
        return True
    else:
        return False

如果我使用 for 循环会花费很多时间,所以我需要一个解决方案 用于多线程或多处理

提前感谢您的帮助:)

【问题讨论】:

标签: python-3.x multithreading subprocess


【解决方案1】:

查看 scrapy(https://scrapy.org/),有适合您的工具。

根据我的经验,scrapy 比仅仅下载“字符串”要好,因为 requests.get 并没有(例如)实际呈现页面。

如果您想以任何方式处理请求(手写,因此可能包含拼写/其他错误):

import requests
from multiprocessing import ThreadPool    

def startUrlCheck(nr):
   pool = ThreadPool(threads)
   results = pool.map(checkurl, YourUrls)
   pool.close()
   pool.join()
   # Do something smart with results
   return results

def checkurl(url):
    r = requests.get(url)
    if 'House' in r.text:
        return True
    else:
        return False

【讨论】:

  • 我的函数与 for 循环完美配合,但我想做的是尽快获得结果,scrapy 对我来说有点混乱,因为我是 python 新手,如果你能帮助我处理多线程无论如何,我的功能会很棒,感谢您的回答兄弟:)
  • @elrichbachman 查看我的更新答案。它又快又脏,但很管用。一般来说,python 会建议您使用进程,这会占用额外的开销,使用线程更快但“风险更大”,但对于这种特殊情况应该无关紧要。
猜你喜欢
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 2019-09-16
相关资源
最近更新 更多