[Python-de] letzte Rettung

Ralf Geschke ralf at kuerbis.org
Thu May 10 18:07:23 EDT 2001


> Du solltest mal differenzieren, was denn "das Programm" bei 
> Dir ist.  Dein Script oder der Interpreter.

Gerne. 

> Die Laufzeit des Pythoninterpreters ist naemlich nicht mit
> der des Scripts identisch. 

Meistens schon. 

> Ganz einfaches Beispiel:
> 
> --Datei eintest.py :
> import os, sys
> 
> print "hallo, dies ist ein test"
> 
> def testfunc():
>     print "hallo noch ein test"
> -- Ende Datei eintest.py
> 
> 
> Jetzt gehst Du auf die Kommandozeile und gibst ein:
> 
> python
> 
> Siehe da, es erscheint der Pythoninterpreter mit seinem Prompt
> >>>
> Dann rufst Du darin auf:
> >>>> import eintest
> 
> Und siehe da, der erste Printbefehl laeuft ab (!)
> 
> Dann gibst Du ein:
> >>>  eintest.testfunc()
> 
> Und siehe da, der zweite Printbefehl (in der Funktion) laeuft ab.
> Und immer wieder erscheint der Prompt.
> 
> Wann ist nun "das Programm"  beendet ?   
> Erst, wenn auch der Interpreter gestoppt wird ?
> Oder schon, wenn die Befehle abgelaufen sind ?

Hierbei ist alles klar. Der Interpreter wartet eben auf weitere
Kommandos. 

> 
> Aha !  Du sagst, Script beendet sich.  Das ist eben nicht
> identisch mit  Interpreter beendet sich.
> Der Global-Scope bleibt naemlich erhalten.

Aha! Der global scope bleibt im Elternprozess des Apache erhalten?
Ok, wenn dies der Fall sein sollte, sehe ich es ein. Damit eruebrigt
sich jegliche weitere Nachfrage. 

Das heisst, dass bei mod_python der Interpreter permanent
laeuft, so dass dort Skripte/Module bereitgehalten werden 
koennen (respektive ebenfalls staendig laufen)?

Wenn ja, dann waere das tatsaechlich ein Unterschied zu
mod_php, denn hierbei ist der PHP-Interpreter zwar ebenfalls
im Apache enthalten, wird aber nur auf Anfrage aktiv, sozusagen
"angestossen", sobald eine Datei mit der richtigen Endung 
aufgerufen wird. 

> Und wieder verwechselst Du die Scripte mit dem Interpreter.

Nicht unbedingt, ich habe ja erwaehnt, dass ich aus der PHP-Welt
komme. Wenn es bei mod_python tatsaechlich so anders ist, sollten
meine Nachfragen eigentlich verstaendlich sein. 

> Warum steckt der Interpreter im Apache ?
> Damit er mit dem Apache-Server am Leben bleibt !  
> So als wenn Du den Prompt
> >>>
> nie verlaesst !! 
> Und solange bleiben auch die Module geladen.

Ist zwar ein wenig zu einfach und beruecksichtigt nicht das 
Eltern-Kind-Modell des Apache, aber na gut...

> Was ist denn "die Anwendung"   ?  
> Eine Funktion die ihr letztes Statement erreicht, ist beendet.
> Der Interpreter aber noch nicht.

Im Spezialfall von mod_python (evtl.?) nicht, und wenn man den 
Kommandozeilen-Interpreter direkt aufruft, ok. Wird letzteres
wirlich von jemandem angewandt? Ich fand das immer ein wenig 
umstaendlich, aber na gut, da lasse ich mich gerne belehren. 

Beste Gruesse,
   Ralf



More information about the Python-de mailing list