解决Python设置函数调用超时,进程卡住的问题

 更新时间:2019年08月08日 10:35:37   作者:蔡尐  
今天小编就为大家分享一篇解决Python设置函数调用超时,进程卡住的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

背景:

最近写的Python代码不知为何,总是执行到一半卡住不动,为了使程序能够继续运行,设置了函数调用超时机制。

代码:

import time
import signal
 
 
def test(i):
 time.sleep(i % 4)
 print "%d within time" % (i)
 return i
 
 
if __name__ == '__main__':
 def handler(signum, frame):
 raise AssertionError
 
 
for i in range(1, 10):
 try:
  signal.signal(signal.SIGALRM, handler)
  signal.alarm(3)
  test(i)
 except AssertionError:
  print "%d timeout" % (i)
 finally:
  signal.alarm(0)
  signal.signal(signal.SIGALRM, signal.SIG_DFL)

说明:

1、调用test函数超时监控,使用sleep模拟函数执行超时

2、引入signal模块,设置handler捕获超时信息,返回断言错误

3、alarm(3),设置3秒闹钟,函数调用超时3秒则直接返回

4、捕获异常,打印超时信息

程序执行结果:

1 within time
2 within time
3 timeout
4 within time
5 within time
6 within time
7 timeout
8 within time
9 within time

以上这篇解决Python设置函数调用超时,进程卡住的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python实现批量图片格式转换

    python实现批量图片格式转换

    这篇文章主要为大家详细介绍了python实现批量图片格式转换的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Python+PyQt5实现多屏幕协同播放功能

    Python+PyQt5实现多屏幕协同播放功能

    在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧
    2025-03-03
  • python定时任务 sched模块用法实例

    python定时任务 sched模块用法实例

    这篇文章主要介绍了python定时任务 sched模块用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库

    Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库

    在实际应用中,我们可能需要将Excel表格中的数据导入到MySQL数据库中,以便于进行进一步的数据分析和处理,本文将介绍如何使用Python将Excel表格中的数据插入到MySQL数据库中,需要的朋友可以参考下
    2023-10-10
  • wxPython中wx.gird.Gird添加按钮的实现

    wxPython中wx.gird.Gird添加按钮的实现

    本文主要介绍了wxPython中wx.gird.Gird添加按钮的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • OpenCV半小时掌握基本操作之边缘检测

    OpenCV半小时掌握基本操作之边缘检测

    这篇文章主要介绍了OpenCV基本操作之边缘检测,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Python操作sqlite3快速、安全插入数据(防注入)的实例

    Python操作sqlite3快速、安全插入数据(防注入)的实例

    这篇文章主要介绍了Python操作sqlite3快速、安全插入数据(防注入)的实例,通过在一个表格中进行操作来论述如何使用Python快速安全地操作sqlite3,需要的朋友可以参考下
    2014-04-04
  • 详解Python中的join()函数的用法

    详解Python中的join()函数的用法

    这篇文章主要介绍了详解Python中的join()函数的用法,join()函数主要用来拼接字符串,是Python学习当中的基础知识,需要的朋友可以参考下
    2015-04-04
  • Pytorch实现简单自定义网络层的方法

    Pytorch实现简单自定义网络层的方法

    这篇文章主要给大家介绍了关于Pytorch实现简单自定义网络层的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-05-05
  • Python对象转JSON字符串的方法

    Python对象转JSON字符串的方法

    这篇文章主要介绍了Python对象转JSON字符串的方法,涉及Python基于json模块实现json转换的实现技巧,非常简便易懂,需要的朋友可以参考下
    2016-04-04

最新评论