tl;dr; See stack overflow post
When copying a bytes object to a shareable list, the trailing zeros are stripped causing data loss. This doesn't appear in the documentation as far as I can tell, and seems to be unexpected behavior related to the implementation.
Example code:
from multiprocessing import shared_memory as shm shmList = shm.ShareableList([bytes(50)]) testBytes = bytes.fromhex("00112233445566778899aabbccddeeff0000") shmList[0] = testBytes print(testBytes) print(shmList[0]) shmList.shm.close() shmList.shm.unlink()
Output:
b'\x00\x11"3DUfw\x88\x99\xaa\xbb\xcc\xdd\xee\xff\x00\x00'
b'\x00\x11"3DUfw\x88\x99\xaa\xbb\xcc\xdd\xee\xff'
Offending portion of CPython code:
_back_transforms_mapping = { 0: lambda value: value, # int, float, bool 1: lambda value: value.rstrip(b'\x00').decode(_encoding), # str 2: lambda value: value.rstrip(b'\x00'), # bytes 3: lambda _value: None, # None }