Вот некоторый частично написанный код, чтобы дать вам идею. Вам нужно определить функцию, которая делает то, что вы хотите, а затем запустить несколько потоков, которые выполняют эту функцию. Единственная сложность заключается в том, что вам нужно разделить входы так, чтобы каждый поток обрабатывал подмножество ваших входов. Я использовал аккуратный трюк, который использовал раньше, чтобы генерировать уникальные кусочки вашего входного списка для каждого потока. Извиняюсь, если есть какие-либо опечатки, поскольку я напечатал это из памяти без тестирования.
Технически вам не нужна часть t.join в этом примере, но хорошо понять, как присоединиться к потокам (то есть ждать для них до fini sh).
from threading import Thread
def make_requests(list_of_requests):
#your requests code here
threads=[]
num_threads = 10
for i in range(num_threads):
threads.append(Thread(target=make_requests, args=(all_requests[i::num_threads],)))
threads[i].start()
# block until all threads are done
for t in threads:
t.join()
Это ускорит ваш код, потому что у вас будет параллельно работать несколько запросов - например, если сайту требуется 5 секунд для ответа на каждый запрос, десять запросов займет 50 секунд (плюс небольшое количество для вашего кода). Теперь это займет 5 секунд, плюс немного больше времени для вашего многопоточного кода. Когда у вас есть код, который тратит долгое время на ожидание ввода-вывода, многопоточность - хороший выбор.