Что безопаснее для реализации Producer-Consumer?
Задача следующая: необходимо реализовать систему, на протяжении жизни которой, в очередь будут сыпаться IO таски. Воркер достает таску и выполняет ее. Число воркеров конфигурируется. Встает вопрос, касающийся того, что система может быть запущена очень долгое время.
Потоки идеально предназначены для работы с IO, но мой коллега заверил, что чем дольше живет поток, тем больше риск того, что сожрется вся память. Вывод: потоки нужно создавать короткоживущие.
К тому же он сказал, что процессы в этом плане куда лучше: они могут дольше жить, для них не существует GIL(пока подпроцесс не создаст внутри себя потоки, но это ужасно), они изолированы и их ресурсами управляет ОС.
Так что же выбрать для реализации такой системы? Я пришел к выводу, что процессы, но тогда у меня вполне очевидный вопрос. Сформулирую его так: если best practice в использовании потоков - делать их короткоживущими, то как следовать producer-consumer паттерну, используя threading, если планируется, что моя программа будет долго жить? Никак?