У меня есть подпроцесс, который постоянно генерирует данные, но большая часть данных мне не интересна. Однако иногда, в случайные моменты времени, мне нужно взять образец вывода - дело в том, что мне нужно его прочитатьна четко определенных границах.Например, предположим, что процесс выдает постоянные 100 байтов в секунду, а полезная информация состоит из кусков по 100 байтов.После того, как он был запущен в течение 4 секунд, я прошу посмотреть 100 байтов вывода, тогда меня будут интересовать байты 400-499 включительно.Но если я спрашиваю в 4,1 секунды, я не хочу перехватывать и получать байты 410-509, мне нужно подождать и посмотреть байты 500-599.В противном случае процесс должен счастливо передавать свой вывод на /dev/null
и . Я не хочу когда-либо блокировать поток вывода .Мой друг Фред может также попросить 100 байтов, скажем, за 4,6 секунды, поэтому мне также нужно отключить этот материал и сделать данные доступными для чтения несколькими потребителями.
Существует ли существующий шаблон дизайна для такого рода вещей?Как я могу реализовать его с помощью подпроцесса python и обеспечить, чтобы связь с подпроцессом была неблокируемой?