How to Force exiting from program/script
Piet van Oostrum
piet at cs.uu.nl
Thu Jul 16 04:48:57 EDT 2009
>>>>> Alex <magobin at gmail.com> (A) a écrit:
>A> hi at all,
>A> I have made a script with a while loop and I want that after 30
>A> seconds the program stop and exit . But the code like this doesn't
>A> run:
>A> In the Console I can see work so that function is correctly called...
>A> #Function to exit
>A> def exit():
>A> print "work"
>A> raise SystemExit()
>A> t = threading.Timer(30.0, exit)
>A> t.start()
>A> # Loop
>A> while True:
>A> ...many lines....
This code gives you a bit more control as it doesn't just force a system
exit, but allows you to continue some other work after aborting the
loop:
import signal, os
from threading import Timer
signalcode = signal.SIGALRM
class AlarmError(Exception):
pass
def handler(signum, frame):
raise AlarmError, "command lasts too long"
signal.signal(signalcode, handler)
def interrupt():
os.kill(os.getpid(), signalcode)
def execute(function, timeout):
Timer(timeout, interrupt).start()
try:
function()
except AlarmError, e:
print e
print 'Execution aborted'
def long_function():
while True:
pass
print "The everlasting command"
execute(long_function, 10)
print "The End"
--
Piet van Oostrum <piet at cs.uu.nl>
URL: http://pietvanoostrum.com [PGP 8DAE142BE17999C4]
Private email: piet at vanoostrum.org
More information about the Python-list
mailing list