[Tutor] signals and frame objects
Kent Johnson
kent_johnson at skillsoft.com
Wed Sep 15 20:00:28 CEST 2004
If you return from the handler, processing will continue where it was
interrupted. If you want to inspect the frame object in your handler, some
information about it is available here:
http://docs.python.org/ref/types.html#l2h-142
For example, running this program in IDLE on MacOSX:
#############################
import signal
done = 0
def handler(signum, frame):
print frame
print dir(frame)
print 'Signal handler called with signal', signum
global done
done = 1
# Set the signal handler and an alarm
signal.signal(signal.SIGALRM, handler)
signal.alarm(3)
print "Looping"
while not done:
pass
print "Out of loop"
signal.alarm(0) # Disable the alarm
print "Done"
##############################3
gives this output:
>>> ================================ RESTART ================================
>>>
Looping
<frame object at 0x4fd6c0>
['__class__', '__delattr__', '__doc__', '__getattribute__', '__hash__',
'__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__str__', 'f_back', 'f_builtins', 'f_code',
'f_exc_traceback', 'f_exc_type', 'f_exc_value', 'f_globals', 'f_lasti',
'f_lineno', 'f_locals', 'f_restricted', 'f_trace']
Signal handler called with signal 14
Out of loop
Done
>>>
Kent
At 09:23 AM 9/15/2004 -0700, Marilyn Davis wrote:
>Hello Tutors,
>
>I'm setting a signal.alarm() and I am successful in catching it in my
>handler function. The parameters given to me in my handler include
>the stack frame. Is there some way I can use that stack frame to
>continue processing?
>
>Thank you for any help anyone can give.
>
>Marilyn Davis
>
>--
>
>_______________________________________________
>Tutor maillist - Tutor at python.org
>http://mail.python.org/mailman/listinfo/tutor
More information about the Tutor
mailing list