python - 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")
解决方案
您无法真正控制服务器处理请求的速度,也无法控制网络延迟,但是您可以使用具有所需并发级别的多线程来提高有效 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)