python运行时间太长怎么办_python:超时功能,如果完成时间太长

本文介绍了一种在Python中处理超时的方法,通过使用信号模块创建一个装饰器来限制函数的执行时间。如果函数在指定时间内未完成,将会抛出一个异常。这种方法适用于单线程的Python程序,但在多线程环境下可能不适用。文章还提供了使用with语句实现超时的示例,并提到了其他可能的解决方案。
摘要由CSDN通过智能技术生成

本问题已经有最佳答案,请猛点这里访问。

我有一个shell脚本,它循环遍历一个包含URL:s的文本文件,我想访问这个文件并截屏。

所有这些都很简单。脚本初始化一个类,当运行该类时,该类将创建列表中每个站点的屏幕截图。有些站点需要非常、非常长的时间来加载,有些站点可能根本就没有加载。因此,我想将screengrabber函数封装在超时脚本中,如果它不能在10秒内完成,那么函数将返回False。

我满足于最简单的解决方案,也许设置一个异步计时器,无论函数内部实际发生什么,10秒后都会返回False ?

对于所有懒惰的人来说,他们喜欢使用库而不是复制和粘贴StackOverflow上的代码片段:pypi.python.org/pypi/timeout-decorator

在signal文档中描述了操作超时的过程。

基本思想是使用信号处理程序设置某个时间间隔的警报,并在计时器过期时引发异常。

注意,这只适用于UNIX。

下面是一个创建装饰器的实现(将以下代码保存为timeout.py)。

from functools import wraps

import errno

import os

import signal

class TimeoutError(Exception):

pass

def timeout(seconds=10, error_message=os.strerror(errno.ETIME)):

def decorator(func):

def _handle_timeout(signum, frame):

raise TimeoutError(e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值