Кажется, в вашем вопросе есть небольшое противоречие - вы хотите иметь возможность хранить объекты Python, но вам также нужен доступ к C / C ++. Я думаю, что независимо от того, какой выбор вы выберете, вам нужно будет преобразовать ваши причудливые структуры данных Python в более статичные структуры, такие как массивы.
Если вам нужен межъязыковой доступ, я бы предложил использовать HDF5, так как это формат файла, специально разработанный для того, чтобы он не зависел от языка, операционной системы, архитектуры системы (например, при загрузке он может конвертировать между старшим и младшим порядковым номером -Endian автоматически) и специально предназначен для пользователей, занимающихся научными / числовыми вычислениями. Я не знаю много о буферах протокола Google, поэтому я не могу комментировать слишком много.
Если вы решите использовать HDF5, я бы также порекомендовал вам использовать h5py вместо pytables. Это связано с тем, что pytables создает файлы HDF5 с большим количеством дополнительных питонических метаданных, что делает чтение данных в C / C ++ более трудным, тогда как h5py не создает никаких этих дополнительных возможностей. Вы можете найти сравнение здесь , и они также дают ссылку на часто задаваемые вопросы по pytables, чтобы узнать их мнение по этому вопросу, чтобы вы могли решить, что лучше всего соответствует вашим потребностям.
Другим форматом, очень похожим на HDF5, является NetCDF . Это также имеет привязки Python, однако у меня нет опыта использования этого формата, поэтому я не могу прокомментировать, кроме указания на то, что он существует и также широко используется в научных вычислениях.