блокировка всех процессов в multiprocessing.pool.ThreadPool

robisho

Активный пользователь
Пользователь
Окт 19, 2020
151
26
28
Добрый день. Подскажите, пожалуйста, кто знает, можно ли во время выполнения процессов multiprocessing.pool.ThreadPool заблокировать все для выполнения одной функции? Т.е. процессы работают, а как приходит время - запускается функция, скажем, проверки используемого в pool списка, и все процессы ждут, когда эта функция завершиться, чтобы подхватить измененный список и продолжить многопроцессорное выполнение основной функции?

Python:
from multiprocessing.pool import ThreadPool
from loguru import logger

with ThreadPool(num) as pool:
    result = pool.imap_unordered(
        run_smtp_send,
        mail_list
    )

    start = time.perf_counter()
    for _ in result:
        try:
            td = time.perf_counter() - start
            if td >= float(recheck_timeout):
                # все должны ждать результата выполнения этой функции
                answer = check_smtp()
                if answer:
                    start = time.perf_counter()
                else:
                    print('[-] TODO')  #
        except Exception as ex:
            logger.opt(exception=True).info(ex)

в таком виде потоки продолжают работать
 
Последнее редактирование:

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Попробуй
Python:
answer = pool.apply(check_smtp)
 
  • Мне нравится
Реакции: robisho

Форум IT Специалистов