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实现批量修改文件名实例
Jul 08 Python
Python实现读取并保存文件的类
May 11 Python
python中copy()与deepcopy()的区别小结
Aug 03 Python
Python中format()格式输出全解
Apr 12 Python
Python3之手动创建迭代器的实例代码
May 22 Python
如何基于python操作excel并获取内容
Dec 24 Python
GDAL 矢量属性数据修改方式(python)
Mar 10 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
python如何操作mysql
Aug 17 Python
Python json解析库jsonpath原理及使用示例
Nov 25 Python
Python字符串格式化方式
Apr 07 Python
Python实现对齐打印 format函数的用法
Apr 28 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生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
js与jquery回车提交的方法
2015/02/03 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
python实用代码片段收集贴
2015/06/03 Python
python下MySQLdb用法实例分析
2015/06/08 Python
python制作最美应用的爬虫
2015/10/28 Python
Python 私有函数的实例详解
2017/09/11 Python
学习python的前途 python挣钱
2019/02/27 Python
python三方库之requests的快速上手
2019/03/04 Python
Python列表对象实现原理详解
2019/07/01 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
招商专员岗位职责
2014/02/08 职场文书
标准毕业生自荐信
2014/06/24 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
财务经理岗位职责
2015/01/31 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js