|
|
- #!/bin/env python
- # -*- coding: utf-8 -*-
- #filename: peartest.py
-
- import threading, signal
-
- is_exit = False
-
- def doStress(i, cc):
- global is_exit
- idx = i
- while not is_exit:
- if (idx < 10000000):
- print "thread[%d]: idx=%d"%(i, idx)
- idx = idx + cc
- else:
- break
- if is_exit:
- print "receive a signal to exit, thread[%d] stop."%i
- else:
- print "thread[%d] complete."%i
-
- def handler(signum, frame):
- global is_exit
- is_exit = True
- print "receive a signal %d, is_exit = %d"%(signum, is_exit)
-
- if __name__ == "__main__":
- signal.signal(signal.SIGINT, handler)
- signal.signal(signal.SIGTERM, handler)
- cc = 5
- threads = []
- for i in range(cc):
- t = threading.Thread(target=doStress, args=(i,cc))
- t.setDaemon(True)
- threads.append(t)
- t.start()
- while 1:
- alive = False
- for i in range(cc):
- alive = alive or threads[i].isAlive()
- if not alive:
- break
|