RosettaCodeData/Task/Handle-a-signal/Python/handle-a-signal-3.py

30 lines
535 B
Python

import signal, time, threading
done = False
n = 0
def counter():
global n, timer
n += 1
print n
timer = threading.Timer(0.5, counter)
timer.start()
def sigIntHandler(signum, frame):
global done
timer.cancel()
done = True
def intrptUNIX():
global timer
signal.signal(signal.SIGINT, sigIntHandler)
timer = threading.Timer(0.5, counter)
timer.start()
while not done:
signal.pause()
t1 = time.time()
intrptUNIX()
tdelt = time.time() - t1
print 'Program has run for %5.3f seconds.' % tdelt