shenk
@shenk
t.me/kshnkvn

Как ограничить общее кол-во выполнений multiprocessing скрипта?

Скрипт запускается так:
with Pool(processes=2) as pool:
    for proxy in PROXY_HOST:
        pool.apply_async(registration, (proxy, groups))
    pool.close()
    pool.join()

В таком виде он работает столько, сколько прокси в списке.
Мне нужно ограничить кол-во выполнений.
1. Передача статуса в базу данных (или любой другой файл) не вариант, т.к. в любом случае поток будет запускаться - проверяться значение в базе и только потом выполняться/закрываться.
2. Убрать из списка прокси ненужное кол-во тоже не подходит, т.к. могут быть заблокированные прокси. Т.е., к примеру мне нужно провести 5 регистраций, я добавляю 5 прокси, но 2 из них заблокированных, соответственно получу только 3 регистрации.
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Можно использовать Semaphore для контроля количества выполнений.

И, кстати, не надо закрывать pool, когда используете with.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
alternativshik
@alternativshik
проверяй результат через pool.apply_async(registration, (proxy, groups)).get()
если успешных рег >= нужному количеству - break
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы