shared lib from python code?
Gabriel Rossetti
gabriel.rossetti at arimaz.com
Tue Feb 24 09:56:59 EST 2009
andrew cooke wrote:
> Gabriel Rossetti wrote:
>
>> Ok, maybe I mis-stated my problem (or mis-understood your answers).. I
>> don' t want to share code as in have multiple processes access a
>> variable and have the same value, like it is done in threads, what I
>> want is to not have n copies of the code (classes, functions, etc)
>> loaded by n python interpreters. When you load Apache for instance, it
>> runs n processes but loads only one copy of parts of it's code (so/dll),
>> that's what I want to do. In C/C++ I would write a shared-lib (so/dll),
>> so once the system has loaded it, it doesn' t re-load it when another
>> process needs it.
>>
>
> i think i understand what you want. the problem is that the kind of
> language that python is really doesn't work well with that kind of
> approach. this is (and i may be wrong - i've not really thought much
> about this before) largely because python places a very strong emphasis on
> late binding. that means that everything is very flexible - all kinds of
> things can be changed "under the hood". and that means that it is very
> difficult to share things safely because almost any solution would end up
> doing what you don't want (sharing variables, like with threads (even
> though they are very deeply buried variables)) rather than what you do
> want (just sharing the static part of the code to save space).
>
> another way to see this is to see the connection with security. this is
> the flip side of your case - because things are so flexible it is very
> hard to run some python code in a "sandbox" in a larger python program.
> there's some discussion on the dev group at the moment and it looks like
> the solution is to only use function closures. but even that doesn't work
> without some patches that remove certain ways to dynamically alter the
> code base.
>
> andrew
>
>
Ok, I see, thank you. I thought this was possible since I have used
*.pyd files before and from what I had read they were dynamic library
files. I guess they must be written in C/C++ then. Thank you for the
explanation.
Gabriel
More information about the Python-list
mailing list