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 Tkinter基础控件用法
Sep 03 Python
python自动化测试实例解析
Sep 28 Python
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 Python
Tensorflow 同时载入多个模型的实例讲解
Jul 27 Python
Python 实现域名解析为ip的方法
Feb 14 Python
python爬虫爬取微博评论案例详解
Mar 27 Python
Python判断对象是否为文件对象(file object)的三种方法示例
Apr 26 Python
简单了解python单例模式的几种写法
Jul 01 Python
python机器学习包mlxtend的安装和配置详解
Aug 21 Python
Django框架序列化与反序列化操作详解
Nov 01 Python
pycharm-professional-2020.1下载与激活的教程
Sep 21 Python
python plt.plot bar 如何设置绘图尺寸大小
Jun 01 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中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
Jquery iframe内部出滚动条
2010/02/11 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
jquery实现企业定位式导航效果
2018/01/01 jQuery
vue路由跳转传参数的方法
2019/05/06 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
举例讲解Python中的算数运算符的用法
2015/05/13 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
python2.7到3.x迁移指南
2018/02/01 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
python 格式化输出百分号的方法
2019/01/20 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
Python中实现输入一个整数的案例
2020/05/03 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
新娘父亲婚礼致辞
2014/01/16 职场文书
生产部厂长职位说明书
2014/03/03 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
办公室岗位职责范本
2015/04/11 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
党支部鉴定意见
2015/06/02 职场文书
环保建议书范文
2015/09/14 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技