Issue 23403: Use pickle protocol 4 by default? - Python tracker

This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
process
Status: closed Resolution: fixed
Dependencies: 33209 Superseder:
Assigned To: lukasz.langa Nosy List: Arfrever, alexandre.vassalotti, davin, josh.r, lukasz.langa, pitrou, sbt, serhiy.storchaka, vstinner
Priority: normal Keywords: patch, patch

Created on 2015-02-06 21:28 by serhiy.storchaka, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Pull Requests
URL Status Linked Edit
PR 6355 merged lukasz.langa, 2018-04-02 23:19
PR 6355 merged lukasz.langa, 2018-04-02 23:19
PR 6491 merged lukasz.langa, 2018-04-16 23:25
Messages (15)
msg235498 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2015-02-06 21:28
Why not use pickle protocol 4 by default? It allows to pickle some objects which are not pickleable with lower protocols and is more efficient.
msg235499 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2015-02-06 21:43
Because pickles will not be compatible with Python < 3.4 anymore. People who want maximum efficiency without compatibility can pass the right protocol manually.
msg235501 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2015-02-06 22:12
Multiprocessing uses default protocol and there is no simple (without hacking the stdlib) way to pass the right protocol manually.
msg235502 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2015-02-06 22:19
> Multiprocessing uses default protocol

AFAIK, this is so you can interact with processes using another version of Python.
msg235504 - (view) Author: Josh Rosenberg (josh.r) * (Python triager) Date: 2015-02-06 22:43
multiprocessing spawns the other processes itself from the same executable used to launch the main process. It's not subprocess. How would a different version of Python get involved?
msg235507 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2015-02-07 01:39
It is possible to have independent processes communicate together, although that's not the most widely-used feature. See:
https://docs.python.org/3/library/multiprocessing.html#multiprocessing-listeners-clients
Also:
https://docs.python.org/3/library/multiprocessing.html#managers
msg251858 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2015-09-29 13:40
Can't we "negociate" the protocol automatically?
msg275440 - (view) Author: Davin Potts (davin) * (Python committer) Date: 2016-09-09 21:03
Closing in deference to the enhancement described in issue28053.
msg314841 - (view) Author: Łukasz Langa (lukasz.langa) * (Python committer) Date: 2018-04-02 23:07
Now that Python 3.3 is dead and 3.4 is soon to follow, it's safe to bump DEFAULT_PROTOCOL to 4.
msg314842 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2018-04-03 00:24
Should we bump the pickle protocol for shelve?
msg314927 - (view) Author: Łukasz Langa (lukasz.langa) * (Python committer) Date: 2018-04-04 06:06
New changeset c51d8c9ba6211d77db639487501f89aa9b4bcbb1 by Łukasz Langa in branch 'master':
bpo-23403: Bump pickle.DEFAULT_PROTOCOL to 4 (#6355)
https://github.com/python/cpython/commit/c51d8c9ba6211d77db639487501f89aa9b4bcbb1
msg315075 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2018-04-07 22:17
Is there something left to be done here?
msg315080 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2018-04-08 06:04
Shelve still uses protocol 3 by default. Should it be bumped too?
msg315117 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2018-04-09 08:54
> Shelve still uses protocol 3 by default. Should it be bumped too?

That sounds reasonable.  Perhaps open a separate issue for it?
msg322282 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2018-07-24 09:17
Opened issue34204 for shelve.