python多线程下信号处理程序示例
- 更新时间:2023-01-18 10:40:24
- 编辑:弘莹华
参考资料
- Python与量化投资:从基础到实战 PDF 电子书 / 248.2 MB / 王小川 推荐度:
- 面向ArcGIS的Python脚本编程 PDF 电子书 / 49.9 MB / Paul 推荐度:
- Python金融数据分析 PDF 电子书 / 131.9 MB / 马伟明 推荐度:
正文内容
本文实例为大家分享了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中用Ctrl+C终止多线程程序的问题解决
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。
python相关教程
-
解析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入门书
这不是一本让你半途而废的编程书,是一本坚持阅读的编程书。大部分读者一周就能看完,包括35岁开始学编程的中年男性、有非常忙碌的女企业家、也有对编程感兴趣的高中生。所以,相信你也可以跟着这本书从零到一。 作者介绍:麻瓜编程创始人。网易云课堂最畅销的课程《Python 实战》系列课程讲师,目前有4万多名学员。专业背景,设计和编程的跨界思维,善于寻找学习技能的最佳途径,善于简单明了的讲解复杂的东西。刚学编程的时候,发现市
大小:39 MBPython入门电子书
-
《Abaqus GUI程序开发指南(Python语言)》配套资源
编辑推荐 内容涉及Python语言的基本语法、常用内核脚本、Abaqus控件使用、插件开发到自定义应用平台开发等多个方面专注于Abaqus GUI程序开发,详细介绍了20多种GUI控件的使用,可满足各类复杂GUI程序的开发需求全彩印刷,书中所有代码均按照免费软件Notepad 中Python语言格式进行语法着色,方便读者阅读人民邮电出版社异步社区提供本书配套程序源代码及CAE模型供读者下载学习使用。 内容提要 本书共6章,主要讲解采用Python语言对Abaqus进行图形界面程序的
大小:1.07 MBAbaqus配套资源
-
《Python金融数据分析》源码
本书系统阐述Python在金融领域的应用,不仅涵盖核心的金融理论及相关数学概念,还详细讲解如何应用Python求解经典的资产定价模型、解决金融中的线性和非线性问题、开发数值程序和利率模型,以及如何根据有限差分法定价来描绘含有期权的隐含波动率曲线等。 本书还介绍了Hadoop在大数据分析中的应用以及Python和Excel的融通,包括使用Python执行MapReduce操作,用NoSQL存储数据,在Python中构建一个组件对象模型服务器和客户端界面与Excel融通,以及在Excel中
大小:3.4 MBPython配套资源
-
Python机器学习(第2版)
本书将机器学习背后的基本理论与应用实践联系起来,通过这种方式让读者聚焦于如何正确地提出问题、解决问题。书中讲解了如何使用Python的核心元素以及强大的机器学习库,同时还展示了如何正确使用一系列统计模型。
大小:109 MB Python
-
python3.8.4官方中文文档 API手册
Python 3.8.4 文档 是一套整理的Python 3.8.3/4 的官方中文文档,包含chm和官方pdf完整版,需要的朋友可下载试试! Python 是一种易于学习又功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。 这个教程非正式地介绍了 Python 语言和系统的基本概念和功能。最好在阅读的时候准备一个 Python 解释器进行练习。所有的例子
大小:38.1 MBpython