python多线程下信号处理程序示例


Posted in Python onMay 31, 2019

本文实例为大家分享了python多线程下信号处理程序示例的具体代码,供大家参考,具体内容如下

下面是一个网上转载的实现思路,经过验证,发现是可行的,就记录下来。

思路

python多线程中要响应Ctrl+C的信号以杀死整个进程,需要:

1.把所有子线程设为Daemon;
2.使用isAlive()函数判断所有子线程是否完成,而不是在主线程中用join()函数等待完成;
3.写一个响应Ctrl+C信号的函数,修改全局变量,使得各子线程能够检测到,并正常退出。

源码

#!/usr/bin/env python
#encoding: utf-8
#filename: signal_demo.py
 
import threading, signal
 
 
def do_job(i, step):
 global exited
 idx = i
 while not exited:
  if(idx < 10000000):
   print 'thread[%d]: idx=%d' % (i, idx)
   idx = idx + step
  else:
   break
 if exited:
  print 'receive a signal to exit, thread[%d] stop.' % i
 else:
  print 'thread[%d] complete.' % i
 
def sig_handler(sig, frame):
 global exited
 exited = True
 print 'receive a signal %d, exited=%d' % (sig, exited)
 
def main():
 #set signal handler
 signal.signal(signal.SIGTERM, sig_handler)
 signal.signal(signal.SIGINT, sig_handler)
 pool = []
 pool_size = 50
 for i in range(pool_size):
  t = threading.Thread(target = do_job, args = (i, pool_size))
  t.setDaemon(True)
  pool.append(t)
  t.start()
 while 1:
  alive = False
  for i in range(pool_size):
   alive = alive or pool[i].isAlive()
   if alive == True:
    break
  if not alive:
   break
 
if __name__ == '__main__':
 exited = False
 main()

命令行运行

python signal_demo.py

截图

python多线程下信号处理程序示例

参考文献

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用os模块的os.walk遍历文件夹示例
Jan 27 Python
python进阶教程之文本文件的读取和写入
Aug 29 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
Sep 28 Python
python将文本转换成图片输出的方法
Apr 28 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
分分钟入门python语言
Mar 20 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
Python实现的批量修改文件后缀名操作示例
Dec 07 Python
python实现一组典型数据格式转换
Dec 15 Python
Python random模块制作简易的四位数验证码
Feb 01 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
python中的unittest框架实例详解
Feb 05 Python
浅谈Python大神都是这样处理XML文件的
May 31 #Python
Python2.7实现多进程下开发多线程示例
May 31 #Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 #Python
一文了解Python并发编程的工程实现方法
May 31 #Python
Python微信操控itchat的方法
May 31 #Python
python基于SMTP协议发送邮件
May 31 #Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 #Python
You might like
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
PHP防止跨域提交表单
2013/11/01 PHP
destoon各类调用汇总
2014/06/20 PHP
PHP微信分享开发详解
2017/01/14 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
jquery 简单的进度条实现代码
2010/03/11 Javascript
关于跨站脚本攻击问题
2011/12/22 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
Python入门篇之函数
2014/10/20 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
Python基于time模块求程序运行时间的方法
2017/09/18 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
Python 下载及安装详细步骤
2019/11/04 Python
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
军训心得体会
2013/12/31 职场文书
爷爷追悼会答谢词
2014/01/24 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
商业房地产广告语
2014/03/13 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
无偿献血倡议书
2014/04/14 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
工地材料员岗位职责
2015/04/11 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
2015年度女工工作总结
2015/10/22 职场文书
科级干部培训心得体会
2016/01/06 职场文书