Из прототипа написано, что вам нужно разобраться с размером вашего сообщения:
Потоковая передача нескольких сообщений
Если вы хотите записать несколько сообщений в один файл или поток,
Вы должны следить за тем, где заканчивается одно сообщение, а другое
начинается. Формат провода протокола буфера не является саморазграничением, поэтому
парсеры буферов протокола не могут определить, где заканчивается сообщение
своя. Самый простой способ решить эту проблему - написать размер
каждое сообщение, прежде чем написать само сообщение. Когда вы читаете
сообщения обратно, вы читаете размер, а затем читать байты в
отдельный буфер, а затем анализировать из этого буфера. (Если вы хотите избежать
копирование байтов в отдельный буфер, проверьте CodedInputStream
класс (как в C ++, так и в Java), который можно ограничить чтением до
определенное количество байтов.)
https://developers.google.com/protocol-buffers/docs/techniques
Простым решением может быть сериализация каждого прото в base64 на новой строке в вашем файле.
При этом на python будет довольно легко разобрать и использовать их.