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

Почему при Queue().get() (multiprocessing) через время зависает программа?

Есть код:

def execute(self, function, **args):
        while True:
            tmout = False
            sem.acquire()
            response = Queue()
            p = Process(
                target=self.execute_work, 
                args=[function, response], 
                kwargs=args
            )
            p.start()
            p.join(10)
            if p.is_alive():
                p.terminate()
                p.join()
                tmout = True
            resp = response.get()
            sem.release()
            if tmout:
                continue
            resp = resp if resp != dict else resp.copy()


К этому методу обращаются несколько потоков и через время response.get() просто виснит, с чем это может быть связано, не знаете ?
  • Вопрос задан
  • 210 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Python-разработчик
    10 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
@dmtrrr
Backend developer
Потому что это блокирующий вызов.

Queue.get(block=True, timeout=None)

Remove and return an item from the queue. If optional args block is true and timeout is None (the default), block if necessary until an item is available.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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