#!/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
|