mattia wrote:
Il Thu, 10 Dec 2009 04:56:33 +0000, Brad Harms ha scritto:
On Thu, 10 Dec 2009 00:29:45 +0000, mattia wrote:
Il Wed, 09 Dec 2009 16:19:24 -0800, Jon Clements ha scritto:
On Dec 9, 11:53 pm, mattia <ger...@gmail.com> wrote:
Hi all, can you provide me a simple code snippet to interrupt the
execution of my program catching the KeyboardInterrupt signal?
Thanks,
Mattia
Errr, normally you can just catch the KeyboardInterrupt exception --
is that what you mean?
Jon.
Ouch, so the simplest solution is just insert in the 'main' function a
try/catch? I believed there was the necessity to create a signal and
than attach the KeyboardInterrupt to it...
KeyboardInterrupt is just an exception that gets raised when CTLR+C (or
the OS's equivalent keyboard combo) gets pressed. It can occur at any
point in a script since you never know when the user will press it,
which is why you put the try: except KeyboardInterrupt: around as much
of your script as possible. The signal that the OS sends to the Python
interpreter is irrelevant.
Ok, so can you tell me why this simple script doesn't work (i.e. I'm not
able to catch the keyboard interrupt)?
import time
import sys
from threading import Thread
def do_work():
for _ in range(1000):
try:
time.sleep(1)
print(".", end="")
sys.stdout.flush()
except KeyboardInterrupt:
sys.exit()
def go():
threads = [Thread(target=do_work, args=()) for _ in range(2)]
for t in threads:
t.start()
for t in threads:
t.join()
go()
Only the main thread can receive the keyboard interrupt.
--
http://mail.python.org/mailman/listinfo/python-list