广告
返回顶部
首页 > 资讯 > 操作系统 >在Linux/Mac下怎么为Python函数添加超时时间
  • 675
分享到

在Linux/Mac下怎么为Python函数添加超时时间

2023-06-16 15:06:29 675人浏览 独家记忆
摘要

本篇内容主要讲解“在linux/Mac下怎么为python函数添加超时时间”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在Linux/Mac下怎么为Python函数添加超时时间”吧!首先我们来看

本篇内容主要讲解“在linux/Mac下怎么为python函数添加超时时间”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在Linux/Mac下怎么为Python函数添加超时时间”吧!

首先我们来看看这个信号的使用方法:

import time import signal   def handler(signum, _):     print('定时到!')     raise Exception('定时到了!')  def clac_statistic(datas):     time.sleep(100)       signal.signal(signal.SIGALRM, handler) signal.alarm(5) clac_statistic('xxx')

运行效果如下图所示:

在Linux/Mac下怎么为Python函数添加超时时间

首先绑定signal.SIGALRM事件到handler函数中,然后使用signal.alarm(10)延迟10秒发送一个信号。10秒到了以后,函数handler被运行。在函数中抛出了一个异常,导致程序结束。clac_statistic函数原本要运行100秒,但是在10秒以后就停止了,从而实现了函数的超时功能。

基于以上原理,我们实现一个装饰器,来简化为不同函数设置超时功能:

import time import signal   class FuncTimeoutException(Exception):     pass  def handler(signum, _):     raise FuncTimeoutException('函数定时到了!')  def func_timeout(times=0):     def decorator(func):         if not times:             return func         def wraps(*args, **kwargs):             signal.alarm(times)             result = func(*args, **kwargs)             signal.alarm(0)  # 函数提前运行完成,取消信号             return result         return wraps     return decorator  signal.signal(signal.SIGALRM, handler)

我们来试一试测试一下这个函数超时装饰器。首先测试函数的运行时间小于超时时间时,程序正常运行没有问题:

在Linux/Mac下怎么为Python函数添加超时时间

再来测试一下函数运行时间超过超时时间的情况:

在Linux/Mac下怎么为Python函数添加超时时间

正常抛出FuncTimeoutException异常。

那我们在实际使用中,可以使用try...except FuncTimeoutException捕获这个异常,然后实现自定义的处理流程,例如:

try:     clac_statistic(100) except FuncTimeException:     print('该函数运行超时,运行自定义的处理流程')

到此,相信大家对“在Linux/Mac下怎么为Python函数添加超时时间”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 在Linux/Mac下怎么为Python函数添加超时时间

本文链接: https://www.lsjlt.com/news/284113.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在Linux/Mac下怎么为Python函数添加超时时间
    本篇内容主要讲解“在Linux/Mac下怎么为Python函数添加超时时间”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在Linux/Mac下怎么为Python函数添加超时时间”吧!首先我们来看...
    99+
    2023-06-16
  • 在linux下玩转带有超时时间的connect函数
    在之前的文章中,我们在Windows下玩过带有超时时间的,本文我们在linux下来玩。在某次面试中,还被遇到了这个问题,有意思。 直接上客户端代码: #include <unistd.h> #includ...
    99+
    2022-06-04
    linux下connect函数 在linux下玩转带有超时时间的connect函数
  • 在Linux下怎么打包tar文件时添加密码
    本篇内容主要讲解“在Linux下怎么打包tar文件时添加密码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在Linux下怎么打包tar文件时添加密码”吧!在当前目录下有一个pma目录的文件夹:使...
    99+
    2023-06-13
  • 怎么在PHP中用内置函数将时间转换为时间戳
    这篇“怎么在PHP中用内置函数将时间转换为时间戳”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么在PHP中用内置函数将时间...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作