Question on multiple Python users in one application
Loren Wilton
myspamacct at earthlink.net
Thu Oct 6 20:22:48 EDT 2016
> Ah, that probably means you want separate interpreters, then.
I hope not, unless I can get separate simultaneous interpreters out of one
CPython.dll in one Windows process space. I'm guessing that I can't, but
since I really don't know what I'm doing with Python yet, maybe I'm wrong
there.
> (for instance, the interactive
> interpreter uses "_" in the builtins to store your last result, and if
> you have multiple users sharing the builtins, they'd be trampling over
> each other's underscores).
I'm very new to Python and I suspect I don't completely understand what you
mean by 'builtins' in this instance. Does Python have a non-module-scope
namespace that contains things like _ ? Could you give me a pointer to any
docs on this?
If it does, do you have an opinion on how hard it might be to wrap it in
some form of module (or "super module"?) scope?
> But if you accept that this is a shared
> environment, with the consequences thereof, you could have easy and
> convenient sharing - and might even be able to have a tiny hack around
> the interactive interpreter to make it use a different module name,
> instead of __main__. So you could do something like this:
>
> #### User "Fred" ####
> etc.
>
> So they would be *visibly* sharing state. This might be acceptable to
> you and your users. It would be pretty easy to code up (with the
> possible exception of the interactive mode).
What you show in example is just about exactly what I want. Each user by
default will have his own auto-generated (or maybe overridable by the user)
namespace, so normally can work independently. But given that he can get the
namespace handle for some other user (which might not be an interactive
user, it might be a background process) then they can share data.
The worry I have is any implicitly global variables, like underscore, and
whatever else may exist in this global namespace. I'd really want some way
to wrap those and make them unique for each user. I'm guessing that may mean
hacking the code for CPython. I'd rather not do that, unless people would
like the code back so I don't have my own unique branch that would break on
each new release. But if that is what is needed, it is certainly something I
could do.
One concern I have is if two users both "import widget". Are they now
sharing the widget namespace? I suspect they are, and that is probably
undesirable. Or does Python have a hierarchical namespace concept, so that
we would have fred.widget.ham and joe.widget.ham after fred and joe both
import widget?
Thanks again!
Loren
More information about the Python-list
mailing list