Задать вопрос
@Lan_Vanten

Как решить проблему создания-закрытия процессов?

Есть
код
from multiprocessing import Pool

def execute(album):
   pool = Pool(processes=8)
   result = pool.map(execute_the_photo, album)
   pool.close()
   pool.join()
   *save to file*

for album in albums:
   execute(album)


Выходит что каждый раз при прогоне первого aka главного цикла процессы создаются и закрываются.
Времени на создание уходит слишком много.

Какие есть варианты, при которых процессы один раз создаются в самом начале обработки, затем обсчитывают данные постоянно, и уже под конец работ, закрываются?
  • Вопрос задан
  • 75 просмотров
Подписаться 2 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Python-разработчик
    10 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
@deliro
Гугл: "ProcessPoolExecutor python"

Создаёшь пул в начале работы и дело в шляпе
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Попробуйте prefork
www.michurin.net/servers/prefork-server.html

В общем то есть несколько вариантов для сервера

1 поток
2 fork (то что у вас)
3 prefork (создается поток до использования, возможно динамическое управление количеством процессов)
4 thred
5 async
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы