В некотором экшене во Flask отправляется JSON с порядка 25 элементов-строк для анализа тональности текста. Анализ представляет из себя вычислительную задачу. Поэтому, для ускорения возврата результата автор создает количество потоков, соответствующее количеству элементов, запускает их и ждет при помощи цикла while:
for item in items:
threading.Thread(target=self.analyze, args=(item, language)).start()
while None in self.items:
time.sleep(0.02)
Не будучи гуру, я посоветовал заменить конструкцию цикла на использование
.join()
, на что автор отвечает, что иначе во Flask будет блокироваться основной поток. Я не знаю что на это ответить, поскольку не знаю как под капотом это работает.
Хорошая ли практика? Что посоветуете?