Я работал над многопоточным парсером изображений в Python, используя requests
и multiprocessing.dummy
.
Скрипт работает нормально, пока не достигнет определенной точки. Тогда весь рабочий процесс становится очень медленным. Также кажется, что чем больше потоков я буду использовать, тем раньше я это испытал.
Часть загрузки выглядит так:
def download(URL):
try:
URL = URL.rstrip()
down = requests.get(URL, headers={'x-test2': 'true'})
# Download Images
except BaseException as e:
print("Error")
Часть потока выглядит так:
if __name__ == '__main__':
ThreadPool(20).map(download, URLlist)
Итак, мой вопрос заключается в том, что замедляет весь мой процесс загрузки, так как URL-адреса в порядке, и он должен продолжаться так же, как и раньше. Есть ли какая-то команда, которую мне не хватает, или это что-то с моей потоковой частью? (потоки закрываются неправильно ...)
Также важно, что эта проблема не появляется с меньшим списком URL-адресов.
(Но это не должно быть проблемой ограничения количества запросов со страницей, с которой я загружаю, потому что тем временем скрипт работает, и после того, как я закончил 0 проблем с точки зрения скорости и доступности страницы) Почему?