栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

一定时间后中断功能

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一定时间后中断功能

我认为创建一个新的流程可能是过大的。如果您使用的是Mac或基于Unix的系统,则应该能够使用signal.SIGALRM来强制使时间过长的功能超时。这将适用于闲置的网络功能或修改功能绝对无法解决的其他问题。

在这里编辑我的答案,尽管我不确定是否应该这样做:

import signalclass TimeoutException(Exception):   # Custom exception class    passdef timeout_handler(signum, frame):   # Custom signal handler    raise TimeoutException# Change the behavior of SIGALRMsignal.signal(signal.SIGALRM, timeout_handler)for i in range(3):    # Start the timer. once 5 seconds are over, a SIGALRM signal is sent.    signal.alarm(5)        # This try/except loop ensures that     #   you'll catch TimeoutException when it's sent.    try:        A(i) # Whatever your function that might hang    except TimeoutException:        continue # continue the for loop if function A takes more than 5 second    else:        # Reset the alarm        signal.alarm(0)

这基本上将计时器设置为5秒钟,然后尝试执行您的代码。如果在时间用完之前未能完成,则会发送SIGALRM,我们将其捕获并变成TimeoutException。这将迫使您进入except块,您的程序可以继续执行。

编辑:哎呀,

TimeoutException
是一个类,而不是一个函数。谢谢,阿巴纳特!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668967.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号