最近写了个python脚本,在服务器上运行,经常莫名其妙的退出,也不知道原因,后面查了资料得到下面两个方法去捕捉退出的发生,一个是捕捉kill信号,另一个是注册atexit函数
例子:
import os
import sys
import time
import atexit
import signal
import traceback
def term_sig_handler(signum, frame):
print 'catched singal: %d' % signum
sys.exit()
@atexit.register
def atexit_fun():
print 'i am exit, stack track:'
exc_type, exc_value, exc_tb = sys.exc_info()
traceback.print_exception(exc_type, exc_value, exc_tb)
if __name__ == '__main__':
# catch term signal
signal.signal(signal.SIGTERM, term_sig_handler)
signal.signal(signal.SIGINT, term_sig_handler)
while True:
print 'hello'
time.sleep(3)
输出:
hello
hello
hello
hello
hello
hello
hello
catched singal: 15
i am exit, stack track: None
注意:atexit_fun不能在main之后,不然不会执行
分享到:
相关推荐
### Python捕捉和模拟鼠标事件的方法 在日常编程工作中,有时候我们需要用到自动化工具来捕捉或模拟鼠标事件。本文将详细介绍如何使用Python中的`PyHook`和`PyWin32`两个模块来实现这一功能。 #### PyHook模块简介...
某天在群内有同学问到,在python下我用input或者raw_input都得输入完后回车才能获取到输入的值,那如何实现任意键退出暂停等功能呢,我当时也没有多想,因为接触python时间也不算长,主要还是Linux下的。 要实现该...
Python语言的try-except语句可以捕捉异常,并执行相应的处理代码。 知识点总结: * Python语言的基本语法和数据类型 * Python语言的运算符和控制结构 * Python语言的函数定义和文件操作 * Python语言的错误处理 ...
"基于python中pygame箭头捕捉.rar"这个资源显然展示了如何利用pygame来实现一个动态的箭头跟随鼠标移动的功能。在这个项目中,我们可以学到以下几个关键知识点: 1. **pygame库的导入与初始化**:首先,我们需要...
在这个“Python显示多路USB摄像头”的项目中,我们主要关注的是如何利用Python编程来同时捕捉和显示来自多个USB摄像头的视频流。PyQT5是一个强大的Python GUI库,它允许开发人员创建复杂的用户界面,这在我们的场景...
要实现该功能,需要的就是暂停程序、等待并捕捉用户的一个键盘输入,然后继续执行。Python 有内建的库能帮我们实现该功能,不过要区别对待 Windows 和 Linux。 msvcrt 中的 getch() 方法 能够帮助在 Windows 下实现...
在“错误与异常”章节,教程深入分析了Python中的错误处理机制,包括语法错误、异常捕捉、自定义异常的定义以及清理动作的设定,帮助开发者构建更加健壮和稳定的程序。 #### Classes — 类 “类”章节介绍了面向...
continue 是 Python 中的关键字,用于跳出当前循环,但不会退出整个循环。 10. def:函数定义 def 是 Python 中的关键字,用于定义函数。函数是 Python 中的基本组成部分,用于封装代码块。 11. del:删除变量 ...
3. **捕捉和处理触摸事件**:接下来,需要设置一个循环来监听触摸事件,并调用之前定义的处理器函数。此外,还可以使用`appuifw.EvtHandler`来绑定特定类型的事件到对应的处理函数。 ```python appuifw.app.body ...
SystemExit异常通常是由sys.exit()函数引发的,它允许程序以指定的状态退出。 TypeError异常发生在操作或函数被应用于不合适的对象类型时,比如将字符串与整数进行数学运算。 UnboundLocalError是NameError的一个...
- **try...except**:用于捕捉并处理异常。 - **finally**:无论是否发生异常都会执行的代码块。 **4.3 文件操作** - **打开文件**:使用`open()`函数。 - **读写操作**:`read()`、`write()`等方法。 - **关闭...
3. 定义`get_image_roi`函数,用于捕捉用户选择的矩形框区域。 4. 实现`select_user_roi`函数,用于读取图像、调整图像大小,并获取用户选择的ROI。 5. 创建窗口并绑定鼠标回调函数,等待用户交互。 6. 用户通过鼠标...
本资源为python代码,利用电脑内置摄像头对动态物体进行隐秘的捕捉(无窗口视频显示),捕捉照片保存在同目录下的motion_capture_image文件夹中,执行后可按Q或q退出。初衷为揪出老鼠真面目用,实现较为初级简单,...
- **多个人脸处理**:如果摄像头捕捉到多个人脸,系统应能正确处理并区分不同个体。 - **光照和角度变化**:考虑不同光照条件和人脸角度变化对识别效果的影响,可能需要引入光照归一化或3D建模技术。 - **实时...
根据商品id指定需要抓取的商品范围,抓取指定商品详情页价格、库存、运费信息,存入数据库作数据分析和参考 ...3.程序运行中途报错,可能是出现滑动验证条导致页面捕捉不到元素,中途手动完成验证即可
- Python的执行退出语句sys.exit(),用于结束Python脚本的执行; - Python的环境变量设置,例如/usr/local/bin/python,指出了Python解释器的可能安装位置; - Python的异常处理机制,try-except语句用于捕捉程序...
一个拾色器(Color Picker)的Python项目可以用于从屏幕上捕捉像素颜色,并显示该颜色的RGB值。以下是一个简单的描述: 导入相关库:首先需要导入必要的Python库,如pyautogui(用于截取屏幕像素颜色)、tkinter...
Python是一种广泛使用的高级编程语言,以其清晰的语法和强大的库支持而闻名。在本次介绍中,将深入探讨如何利用Python的最新版本3.6.3以及开源计算机视觉库OpenCV的版本3.3.0来实现动态人脸捕获的功能。 OpenCV,...
break 语句用于退出循环,而 continue 语句用于跳过当前循环体,继续执行下一个循环体。 3. 随机数生成:Python 中有多种方式来生成随机数,包括使用 random 模块和 randint 函数。random.randint(a, b) 函数用于...
在Python编程领域,OpenCV(开源计算机视觉库)是一个强大的工具,用于图像处理和计算机视觉任务。本案例中,我们将探讨如何使用OpenCV库在Python中打开并操作电脑的摄像头。 首先,`demo.py`是包含实现这个功能的...