[Python-Dev] Re: [PyWX] RE: PyWX (Python AOLserver plugin)

Titus Brown titus@caltech.edu
Tue, 12 Sep 2000 12:14:12 -0700

-> > Are you using separate interpreters or one interpreter with multiple
-> > threads?  It sounds like the latter.  If you use the latter than
-> > definately things like the process address space and the 
-> > current working directory are shared across the threads.  I don't 
-> > think I understand your design.  Can you explain the architecture
-> > of PyWX?
-> > 
-> """Because sub-interpreters (and the main interpreter) are part of
-> the same process, the insulation between them isn't perfect -- for 
-> example, using low-level file operations like os.close() they can
-> (accidentally or maliciously) affect each other's open files. 
-> Because of the way extensions are shared between (sub-)interpreters,
-> some extensions may not work properly; this is especially likely
-> when the extension makes use of (static) global variables, or when
-> the extension manipulates its module's dictionary after its 
-> initialization"""
-> So we are basically stuck.  We can't link against Python multiple
-> times, so our only avenue to provide multiple interpreter instances
-> is to use the "Py_InterpreterNew" call and hope for the best.
-> Any hope for better interpreter isolation in 2.0? (2.1?)

Perhaps a better question is: is there any way to get around these problems
without moving from a threaded model (which we like) to a process model?

Many of the problems we're running into because of this lack of interpreter
isolation are due to the UNIX threading model, as I see it.  For example,
the low-level file operation interference, cwd problems, and environment
variable problems are all caused by UNIX's determination to share this stuff
across threads.  I don't see any way of changing this without causing far
more problems than we fix.