threading

Mathieu Prevot mathieu.prevot at ens.fr
Thu Aug 14 05:30:44 EDT 2008


2008/8/13 Parimala <parimala.b at accord-soft.com>:
> Hello,
>
>        I am using python2.5.1 version to run my test scripts. I want to use
> 'threading' module in my tests. As a startup program, I had run the
> following one.
>
> import threading
> import sys
> import time
>
> def hello():
>   i=0
>   try:
>     while i<10:
>       print "hi"
>       time.sleep(1)
>       i+=1
>   except KeyboardInterrupt:
>     print 'KeyboardInterrupt'
>     raise KeyboardInterrupt
>
> try:
>   thread=threading.Thread(target=hello,args=())
>   thread.start()
> except KeyboardInterrupt:
>   print 'KeyboardInterrupt'
>   raise KeyboardInterrupt
>
> once program starts, problem is..
> I am not able to abort the thread using (CTRL+C) KeyboardInterrupt.  While
> running if I press CTRL+C, it won't generate any exception until the end of
> the execution. Once the execution gets over,  it will give "Exception
> exceptions.KeyboardInterrupt in <module 'threading' from
> 'C:\python25\lib\threading.py'> ignored" this message and exits.
>
> I had gone through some documents, it says if a thread is joined with
> .join() method then we can't stop that process until it releases the lock
> what it acquired. But in the above program I didn't use .join() method but
> still I am not able to abort the thread.
>
> Could you please suggest me how can I abort the thread at any point in time
> using CTRL+C.

Hi,

a terminate method is given here:
http://sebulba.wikispaces.com/recipe+thread2

so you can terminate the thread by:

(...)
t.start()
(...)

while True:
  try:
    #some code
  except KeyboardInterrupt:
    t.terminate()
    break

Mathieu



More information about the Python-list mailing list