Usually you will not want to do this, for the reasons mentioned above.
There are occasionally some times when it is beneficial, though.
You will need serializable versions of both your read, and the bam header. The fastest method is to call to_string() on your read, NOT to_dict() (which calls to_string and then splits on tabs to make it a dict). The string that comes out will be serializable. You can do this in your own __reduce__ method if you like.
To turn this back into a read, that string plus your bam header go into AlignedSegment.fromstring()