import threading, signal
is_exit = False
def write_login(self): global is_exit write_log('login rsync start!!!') count = 0 data_list = [] data_line = '' while not is_exit: # if debug, then log_array = self._redis.lrange(self._list_name, 0, 0), data_line = log_json try: log_array = self._redis.lrange(self._list_name, 0, 9999) except Exception,e: write_log("[write_login][redis err]" + str(e) + data_line) data_list = [] is_exit = True return
https://www.douban.com/note/286438085/
python多線程中要響應Ctrl+C的信號以殺死整個進程,需要:
1.把所有子線程設為Daemon;
2.使用isAlive()函數判斷所有子線程是否完成,而不是在主線程中用join()函數等待完成;
3.寫一個響應Ctrl+C信號的函數,修改全局變量,使得各子線程能夠檢測到,並正常退出。
4.isAlive的循環判斷要寫在main里,否則無法接受中斷信號