Многопроцессорная обработка Python позволяет добиться успеха первым процессом - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь ускорить создание сценария, который пытается получить данные из онлайн-источника. Поскольку у меня возникают проблемы с сетью, и большинство моих вызовов заканчиваются ошибкой тайм-аута, у меня возникла идея выполнить один и тот же вызов на нескольких процессах, чтобы мои шансы получить результат были выше, и мне не нужно ждать впопытка повторения ошибкиКак я могу достичь этого? Я смотрел на многопроцессорную библиотеку, но я не понимаю, как сохранить «выигрышный» процесс и прервать другие. Есть идеи?

1 Ответ

0 голосов
/ 21 октября 2019

Не используйте многопроцессорность для операций ввода-вывода, для этого используйте модуль потоков. Вы ничего не делаете на своей стороне, вы просто ждете ответа от удаленного сервера, в этой ситуации многопоточный модуль - это то, что вам нужно.

Если ваш удаленный сервер не отвечает вам в нужное время - этозанят или недоступен, если вы одновременно отправляете на сервер 100 запросов, он игнорирует 100 запросов вместо 1.

Модуль многопоточности хорош, если вы можете отправить 100 запросов на 100 различных серверов или 100 на один сервер, который может обрабатывать100 рекветов одновременно. В вашей ситуации нет никаких доказательств того, что массивная атака по запросам может помочь достичь недоступного сервера ... Я использую многопоточность при работе с моей базой данных, если я вижу, что БД не может повесить 10 потоков за раз, я уменьшаю число до 8 и вижучто произойдет, чтобы определить идеальное количество входящих потоков.

...