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

  • 更新时间:2023-01-18 10:40:24
  • 编辑:何浩言

本文实例为大家分享了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中用Ctrl+C终止多线程程序的问题解决

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

相关教程

  • 解析python多线程与global变量

    今天小编就为大家分享一篇对python多线程与global变量详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2020-02-10

  • 实例分析Python实现的多进程和多线程功能

    这篇文章主要介绍了Python实现的多进程和多线程功能,结合实例形式分析了Python多线程与多进程实现分布式系统功能相关操作技巧,需要的朋友可以参考下

    发布时间:2020-02-22

  • python实现的多线程端口扫描功能示例

    这篇文章主要介绍了python实现的多线程端口扫描功能,结合实例形式分析了Python基于socket的端口扫描具体步骤与相关操作技巧,需要的朋友可以参考下

    发布时间:2022-04-03

  • 深入理解 Python 中的多线程 新手必看

    你应当将下边的例子运行多次,以便可以注意到线程是不可预测的和线程每次运行出的不同结果。声明:从这里开始忘掉你听到过的关于GIL的东西,因为GIL不会影响到我想要展示的东西

    发布时间:2022-04-05

  • Python基于多线程操作数据库相关知识点详解

    这篇文章主要介绍了Python基于多线程操作数据库相关问题,结合实例形式分析了Python使用数据库连接池并发操作数据库避免超时、连接丢失相关实现技巧,需要的朋友可以参考下

    发布时间:2019-08-02

  • Python多线程实例详解

    这篇文章主要介绍了Python 多线程实例详解的相关资料,需要的朋友可以参考下

    发布时间:2020-01-11

  • python多线程的实现方式代码详解

    本篇文章给大家带来的内容是关于python多线程的两种实现方式(代码教程),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    发布时间:2019-11-15

  • 编程小白的第1本Python入门书

    编程小白的第1本Python入门书

    这不是一本让你半途而废的编程书,是一本坚持阅读的编程书。大部分读者一周就能看完,包括35岁开始学编程的中年男性、有非常忙碌的女企业家、也有对编程感兴趣的高中生。所以,相信你也可以跟着这本书从零到一。 作者介绍:麻瓜编程创始人。网易云课堂最畅销的课程《Python 实战》系列课程讲师,目前有4万多名学员。专业背景,设计和编程的跨界思维,善于寻找学习技能的最佳途径,善于简单明了的讲解复杂的东西。刚学编程的时候,发现市

    大小:39 MBPython入门电子书

  • 《Abaqus GUI程序开发指南(Python语言)》配套资源

    《Abaqus GUI程序开发指南(Python语言)》配套资源

    编辑推荐 内容涉及Python语言的基本语法、常用内核脚本、Abaqus控件使用、插件开发到自定义应用平台开发等多个方面专注于Abaqus GUI程序开发,详细介绍了20多种GUI控件的使用,可满足各类复杂GUI程序的开发需求全彩印刷,书中所有代码均按照免费软件Notepad 中Python语言格式进行语法着色,方便读者阅读人民邮电出版社异步社区提供本书配套程序源代码及CAE模型供读者下载学习使用。 内容提要 本书共6章,主要讲解采用Python语言对Abaqus进行图形界面程序的

    大小:1.07 MBAbaqus配套资源

  • 《Python金融数据分析》源码

    《Python金融数据分析》源码

    本书系统阐述Python在金融领域的应用,不仅涵盖核心的金融理论及相关数学概念,还详细讲解如何应用Python求解经典的资产定价模型、解决金融中的线性和非线性问题、开发数值程序和利率模型,以及如何根据有限差分法定价来描绘含有期权的隐含波动率曲线等。 本书还介绍了Hadoop在大数据分析中的应用以及Python和Excel的融通,包括使用Python执行MapReduce操作,用NoSQL存储数据,在Python中构建一个组件对象模型服务器和客户端界面与Excel融通,以及在Excel中

    大小:3.4 MBPython配套资源

  • Python机器学习(第2版)

    Python机器学习(第2版)

    本书将机器学习背后的基本理论与应用实践联系起来,通过这种方式让读者聚焦于如何正确地提出问题、解决问题。书中讲解了如何使用Python的核心元素以及强大的机器学习库,同时还展示了如何正确使用一系列统计模型。

    大小:109 MB Python

  • python3.8.4官方中文文档 API手册

    python3.8.4官方中文文档 API手册

    Python 3.8.4 文档 是一套整理的Python 3.8.3/4 的官方中文文档,包含chm和官方pdf完整版,需要的朋友可下载试试! Python 是一种易于学习又功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。 这个教程非正式地介绍了 Python 语言和系统的基本概念和功能。最好在阅读的时候准备一个 Python 解释器进行练习。所有的例子

    大小:38.1 MBpython

用户留言