В настоящее время я изучаю Python (на фоне Java), и у меня есть вопрос о том, для чего я бы использовал потоки в Java.
Моя программа будет использовать воркеры для периодического чтения некоторых данных из некоторого веб-сервиса. Каждый воркер будет периодически вызывать веб-службу в разное время.
Из того, что я прочитал, предпочтительнее использовать модуль multiprocessing
и настраивать рабочих как независимые процессы, которые работают со своими данными -сборочные задания. На Java я бы сделал что-то похожее, но с использованием потоков. Хотя кажется, что я могу использовать потоки в Python, я проиграю в использовании нескольких процессоров.
Вот суть моего вопроса: веб-служба ограничена, а именно, рабочие не должны вызывать ее больше, чем x раз в секунду. Каков наилучший способ для рабочих проверить, могут ли они запрашивать данные?
Я не понимаю, нужно ли этого достичь, используя:
nmap
, для обмена некоторыми данными / значениями между процессами, которые описывают, могут ли они вызывать веб-службу. Manager ()
объект, который отслеживает количество вызовов в секунду и информирует работников, есть ли у них разрешение на выполнение своих вызовов. Конечно, я предполагаю, что это может быть связано с тем, как я отслеживаю количество вызовов в секунду. Я полагаю, что одним из вариантов было бы, чтобы рабочие вызывали функцию для какого-либо другого объекта, который выполняет вызов веб-службы и записывает текущее количество вызовов в секунду. Другой вариант - для функции, которая вызывает веб-службу, жить внутри каждого рабочего, и чтобы они отправляли сообщение управляющему объекту каждый раз, когда они делают вызов веб-службы.
Мысли приветствуются!