У меня есть следующий фрагмент, который пытается разделить обработку по нескольким подпроцессам.
def search(self):
print("Checking queue for jobs to process")
if self._job_queue.has_jobs_to_process():
print("Queue threshold met, processing jobs.")
job_sub_lists = partition_jobs(self._job_queue.get_jobs_to_process(), self._process_pool_size)
populated_sub_lists = [sub_list for sub_list in job_sub_lists if len(sub_list) > 0]
self._process_pool.map(process, populated_sub_lists)
print("Job processing pool mapped")
Функция поиска вызывается основным процессом в цикле while, и если очередь достигает порогового значения, пул обработки сопоставляется с функцией процесса с заданиями, полученными из очереди. У меня вопрос: блокирует ли многопроцессорный пул python основной процесс во время выполнения или он немедленно продолжает выполнение? Я не хочу встречаться со сценарием, в котором «has_jobs_to_process ()» оценивается как true, а во время обработки заданий он оценивается как true для другого набора заданий, а «self._process_pool.map (process, populated_sub_lists)» вызывается опять же, поскольку я не знаю последствий повторного вызова map во время работы процессов.