我正在制作一个minecraft名称狙击机器人。我有一个令牌列表,minecraftsAPI可以让你在阻止它们之前为每个令牌发送三个请求。对它的请求看起来像这样:
requests.put(f'https://api.minecraftservices.com/minecraft/profile/name/{name}',
headers={"Authorization": "Bearer " + token,
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0",
"Content-Type": "application/json"})
现在我可以使用一个简单的for循环,并以这种方式发送所有请求,但它似乎真的很慢,我很确定有办法加快它。我听说过多线程、多进程和异步,但我真的不确定其中哪一个会是最快的,以及如何以最有效的方式使用它们。如果有人能帮我解决这个问题,我将不胜感激。
我相信Python:如何同时发送多个http请求?(像叉子一样(回答你的问题!使用多线程解决这个问题是正确的,请尝试使用concurrent.futures
。
如果你想一次发送3个请求,那么制作一个包含3个工作线程的线程池,如下所示:
def send_mc_request(token):
...
from concurrent.futures import ThreadPoolExecutor
tokens = [token1, token2, ...]
num_requests_to_send = 3
with ThreadPoolExecutor(max_workers=num_requests_to_send) as executor:
for token in tokens:
for _ in range(num_requests_to_send):
executor.submit(send_mc_request, token)