On 8/29/05, Hans Dushanthakumar<div><span class="gmail_quote"><b class="gmail_sendername"></b> &lt;<a href="mailto:Hans.Dushanthakumar@navman.com">Hans.Dushanthakumar@navman.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Thanks Kent<br><br>How do I send a signal from the main thread to stop execution of a child<br>thread?<br><br>I tried the foll:, but got an error:<br>Other than by this method, is there any other mechanism to stop a<br>thread?
<br><br>import threading<br>import time<br><br>class shownum(threading.Thread):<br><br>&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self, start_num):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threading.Thread.__init__(self)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.num = start_num<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.stop = 0
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;def run(self):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i in range(12):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time.sleep(1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;shownum: &quot;, self.num<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.num = self.num + 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if self.stop == 1:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;def stop(self):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.stop = 1<br><br>&nbsp;&nbsp;&nbsp;&nbsp;def chng(self):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.num = 1<br><br>incr_num_thread = shownum1(201)<br>incr_num_thread.start()<br><br>time.sleep(3)<br>incr_num_thread.chng()<br>time.sleep
(3)<br>incr_num_thread.stop()<br><br><br>Output:<br><br>shownum:&nbsp;&nbsp;201<br>shownum:&nbsp;&nbsp;202<br>shownum:&nbsp;&nbsp;1<br>shownum:&nbsp;&nbsp;2<br>shownum:&nbsp;&nbsp;3<br>Traceback (most recent call last):<br>&nbsp;&nbsp;File &quot;H:\Docs\PyScripts\test_threads.py&quot;, line 31, in ?
<br>&nbsp;&nbsp;&nbsp;&nbsp;incr_num_thread.stop()<br>TypeError: 'int' object is not callable<br>shownum:&nbsp;&nbsp;4<br>shownum:&nbsp;&nbsp;5<br>shownum:&nbsp;&nbsp;6<br></blockquote></div><br>
You would probably want to use a shared threading.Condition
object.&nbsp; A number of threads manuals mention using this in a boss
shutdown model.<br>&nbsp; -Arcege<br>-- <br>There's so many different worlds,<br>So many different suns.<br>And we have just one world,<br>But we live in different ones.