Embedding multiple interpreters

Gregory Ewing greg.ewing at canterbury.ac.nz
Fri Dec 6 17:23:24 EST 2013


Garthy wrote:

> The bare minimum would be 
> protection against inadvertent interaction. Better yet would be a setup 
> that made such interaction annoyingly difficult, and the ideal would be 
> where it was impossible to interfere.

To give you an idea of the kind of interference that's
possible, consider:

1) You can find all the subclasses of a given class
object using its __subclasses__() method.

2) Every class ultimately derives from class object.

3) All built-in class objects are shared between
interpreters.

So, starting from object.__subclasses__(), code in any
interpreter could find any class defined by any other
interpreter and mutate it.

This is not something that is likely to happen by
accident. Whether it's "annoyingly difficult" enough
is something you'll have to decide.

Also keep in mind that it's fairly easy for Python
code to chew up large amounts of memory and/or CPU
time in an uninterruptible way, e.g. by
evaluating 5**100000000. So even a thread that's
keeping its hands entirely to itself can still
cause trouble.

-- 
Greg



More information about the Python-list mailing list