Perhaps flatbuffers would be better?
Neither solve the copying problem, though.
So this doesn't seem like a versatile solution for sharing data structs between two Python processes. You're gonna have to reserialize the whole thing if one side wants to edit, which is basically copying.