Il Thu, 10 Dec 2009 23:10:02 +0000, Matthew Barnett ha scritto:

> 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.

Ok, so is there any way to stop all the threads if the keyboard interrupt 
is received?
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to