[Python-Dev] Const access to CPython objects outside of GIL?

Chris Angelico rosuav at gmail.com
Wed Jul 18 14:19:53 EDT 2018


On Wed, Jul 18, 2018 at 8:18 PM, Radim Řehůřek
<radim at rare-technologies.com> wrote:
> Thanks for your feedback everyone. Given the overwhelmingly negative
> response, we'll drop this line of investigation.
>
> If more people bring up the same request in the future (unlikely), feel free
> to reach out to us for some extra set of hands. Given the initial poking, I
> still think a "reasonable subset" might be "reasonably easy"; IMHO more a
> process/maintenance/ROI question than a strictly technical one.

The trouble would be defining that "reasonable subset", which would
end up having a very large number of words in it. For example,
accessing a Python list after any sort of size change could crash the
interpreter hard (as the buffer will have been reallocated). I'm
fairly sure you can safely read from a tuple so long as you retain a
ref to the tuple itself, though, so you may find that there are
options there.

Maybe, depending on your needs, the best solution might be to NOT
access Python objects at all. Instead, have an API for changing info
that is referenced outside of the GIL, and then the key info gets
grabbed in a form that doesn't require Python. That would require some
changes in the Python code (function calls rather than list
manipulation), but would be 100% guaranteed safe. But you've probably
already thought of that, so this is a case where that doesn't work :)

ChrisA


More information about the Python-Dev mailing list