On 6/10/2020 8:33 AM, Mark Shannon wrote:
Hi Petr,

On 09/06/2020 2:24 pm, Petr Viktorin wrote:
On 2020-06-05 16:32, Mark Shannon wrote:

Whether Python interpreters run sequentially or in parallel, having them work will enable a use case I would like to see: allowing me to call Python code from wherever I want, without thinking about global state. Think calling Python from an utility library that doesn't care about the rest of the application it's used in. I personally call this "the Lua use case", because light-weight, worry-free embedding is an area where Python loses to Lua. (And JS as well—that's a relatively recent development, but much more worrying.)

This seems like  a worthwhile goal. However I don't see why this requires having multiple Python interpreters in a single O/S process.

I assume it would be so that my code could link with library A, which embeds Python, and library B, which also embeds Python. A and B have no knowledge of each other.

The part I have been involved in is moving away from process-global state. Process-global state can be made to work, but it is much safer to always default to module-local state (roughly what Python-language's `global` means), and treat process-global state as exceptions one has to think through. The API introduced in PEPs 384, 489, 573 (and future planned ones) aims to make module-local state possible to use, then later easy to use, and the natural default.

I don't agree. Process level state is *much* safer than module-local state.

Suppose two interpreters, have both imported the same module.
By using O/S processes to keep the interpreters separate, the hardware prevents the two copies of the module from interfering with each other. By sharing an address space the separation is maintained by trust and hoping that third party modules don't have too many bugs.

I don't see how you can claim the later case if safer.

I've always assumed that per-module state meant per-module, per-interpreter. Maybe I've misunderstood, in which case I agree with Mark. If per-module state isn't isolated per interpreter, that sort of kills the multiple interpreter model, in my mind.

Eric

_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/WOOPV4QKFFZSZ5QVXMC3JBEHPTVULH4S/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to