首页 > 解决方案 > Python 加速请求

问题描述

我正在创建一个小型 python 脚本来通过用户名查找网站、论坛等页面,您可以轻松理解它。我将使用请求,但是一个搜索和另一个搜索之间真的很慢。你有什么解决方案可以推荐吗?提前致谢。

import requests
from printy import printy, inputy

username = inputy("[?] Username: ", "b")



fivehundredpx = requests.get('https://www.500px.com/'+ username)

if fivehundredpx.status_code == 200:
    printy('500px Found: https://www.500px.com/'+ username, "n")
elif fivehundredpx.status_code == 404:
    printy('500px Not Found', "r")



sevencups = requests.get('https://www.7cups.com/@'+ username)

if sevencups.status_code == 200:
    printy('7Cups Found: https://www.7cups.com/@'+ username, "n")
elif sevencups.status_code == 404:
    printy('7Cups Not Found', "r")

标签: pythonpython-requests

解决方案


您无法真正控制服务器处理请求的速度,也无法控制网络延迟,但是您可以使用具有所需并发级别的多线程来提高有效 RPS。

这是一个代码片段,展示了如何实现多个请求在运行中以提高整体处理速度。希望GIL在 IO 方面不是真正的问题,并且您确实可以实现一个数量级的性能改进。

from concurrent.futures import ThreadPoolExecutor

def parse_skeleton(parse_fn, start=1, end=1_000_000, concurrency=10):

    with ThreadPoolExecutor(max_workers=concurrency, thread_name_prefix='parser') as executor:

        for id in range(start, end):
            executor.submit(parse_fn, id)

推荐阅读