J
james_w77
I am trying to use Peter's StoppableThread(threading.Thread).
What I want to do is to start 5 child threads, then do something, then
when got ^C keyboard exception, stop the child thread.
For some reason (apparently strange for me ), the child threads can
NOT be stopped.
See the enclosed code for more info,
Thanks and have a nice Xmas.
Jimmy
============
#!/usr/bin/env python
import threading, thread
from time import sleep, ctime
class StoppableThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self._running = True
def stop(self):
self._running = False
def run(self):
while self._running:
# do stuff here that loops periodically to allow
# the flag to be checked
print 'start loop at:', ctime()
sleep(4)
def main():
threads = []
try:
for i in range(5):
t = StoppableThread()
t.start()
sleep(0.001)
threads.append(t)
except KeyboardInterrupt:
for t in threads:
t.stop()
t.join()
del threads[:]
print 'child thread exiting...'+'/n/n'
if __name__ == '__main__':
main()
What I want to do is to start 5 child threads, then do something, then
when got ^C keyboard exception, stop the child thread.
For some reason (apparently strange for me ), the child threads can
NOT be stopped.
See the enclosed code for more info,
Thanks and have a nice Xmas.
Jimmy
============
#!/usr/bin/env python
import threading, thread
from time import sleep, ctime
class StoppableThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self._running = True
def stop(self):
self._running = False
def run(self):
while self._running:
# do stuff here that loops periodically to allow
# the flag to be checked
print 'start loop at:', ctime()
sleep(4)
def main():
threads = []
try:
for i in range(5):
t = StoppableThread()
t.start()
sleep(0.001)
threads.append(t)
except KeyboardInterrupt:
for t in threads:
t.stop()
t.join()
del threads[:]
print 'child thread exiting...'+'/n/n'
if __name__ == '__main__':
main()