Здесь идет реальная ситуация, с которой я недавно столкнулся. Раньше у меня был скрипт, который запускался каждый час и управлялся crontab, но иногда пользователи заходили на машину и запускали скрипт вручную. У этого были некоторые проблемы, например, одновременное выполнение crontab и пользователем могло вызвать проблемы, и иногда пользователи входили в систему как root - я знаю, что это плохой шаблон, не под моим контролем - и запускали скрипт с неправильными разрешениями. Поэтому мы решили запустить подпрограмму как демон с соответствующими разрешениями, и команда, которую использовали пользователи для запуска, теперь просто запускает демон.
Таким образом, эта команда, выполняемая пользователем, в основном делает две вещи: запускает демон и ждет, пока он завершит задачу. Но для этого также потребовалось время ожидания, чтобы пользователь мог дампить логи демонов во время ожидания.
Если я понимаю ситуацию, которую вы предложили, у меня был такой случай: мне нужно было продолжать слушать демона, в то же время взаимодействуя с пользователем независимо. Решение было асинхронным чтением.
К счастью для меня, я не думал об использовании потоков. Вероятно, я бы так и думал, если бы писал код на Java, но это был код Python.