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里,否则无法接受中断信号