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进阶教程之文本文件的读取和写入
Aug 29 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
手把手教你如何安装Pycharm(详细图文教程)
Nov 28 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
解决django前后端分离csrf验证的问题
Feb 03 Python
Python for循环与range函数的使用详解
Mar 23 Python
python使用time、datetime返回工作日列表实例代码
May 09 Python
python 并发下载器实现方法示例
Nov 22 Python
Python+OpenCV实现将图像转换为二进制格式
Jan 09 Python
10个python爬虫入门实例(小结)
Nov 01 Python
python中最小二乘法详细讲解
Feb 19 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函数(简单整理)
2010/04/30 PHP
写php分页时出现的Fatal error的解决方法
2011/04/18 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
2015/01/13 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
不使用 JS 匿名函数理由
2017/11/17 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
django和flask哪个值得研究学习
2020/07/31 Python
css3实现input输入框颜色渐变发光效果代码
2014/04/02 HTML / CSS
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
浅谈react路由传参的几种方式
2021/03/23 Javascript
关心下一代工作先进事迹
2014/08/15 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
详解MongoDB的条件查询和排序
2021/06/23 MongoDB
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技
canvas 中如何实现物体的框选
2022/08/05 Javascript