New submission from jakirkham <jakirk...@gmail.com>:

It would be nice (where possible) to support out-of-band pickling of builtin 
`bytes`-like types. This would allow binary data from these objects to be 
shipped along separately zero-copy and later reconstructed during unpickling.

It seems that `bytes`, `bytearray`, and `array` would be good candidates for 
this behavior. Not sure if `mmap` or `memoryview` would make sense as it might 
not be clear on how to reconstruct them during unpickling, but if someone sees 
a way those would be nice to support too.

To illustrate this a bit, here is the behavior with a `bytes` object today:

```
In [1]: import pickle

In [2]: b = b"abc"

In [3]: l = []

In [4]: p = pickle.dumps(b, protocol=5, buffer_callback=l.append)

In [5]: l
Out[5]: []
```

With this change, we would see this behavior instead:

```
In [1]: import pickle

In [2]: b = b"abc"

In [3]: l = []

In [4]: p = pickle.dumps(b, protocol=5, buffer_callback=l.append)

In [5]: l
Out[5]: [<pickle.PickleBuffer at 0x10efe7540>]
```

(This is my first Python bug submission. So apologies if I got turned around 
here. Please go easy on me :)

----------
messages: 369533
nosy: jakirkham
priority: normal
severity: normal
status: open
title: Support out-of-band pickling for builtin types
type: performance
versions: Python 3.8, Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue40718>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to