为了账号安全,请及时绑定邮箱和手机立即绑定

如果需要太长时间才能完成,则使用超时值函数。

如果需要太长时间才能完成,则使用超时值函数。

红糖糍粑 2019-06-25 13:34:43
如果需要太长时间才能完成,则使用超时值函数。我有一个shell脚本,它循环遍历一个包含URL:s的文本文件,我想访问它并截取截图。这一切都是简单而简单的。脚本初始化一个类,在运行时创建列表中每个站点的屏幕快照。有些站点需要很长时间才能加载,有些可能根本没有加载。因此,我希望将屏幕抓取函数包装在超时脚本中,使函数返回。False如果它不能在10秒内完成。我对可能的最简单的解决方案感到满意,也许设置一个异步计时器,在10秒后返回false,而不管函数内部实际发生了什么?
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

我用with语句,它允许您这样做:

with timeout(seconds=3):
    time.sleep(4)

这会引起时间错误。

代码仍在使用signal因此,只有UNIX:

import signalclass timeout:
    def __init__(self, seconds=1, error_message='Timeout'):
        self.seconds = seconds
        self.error_message = error_message    def handle_timeout(self, signum, frame):
        raise TimeoutError(self.error_message)
    def __enter__(self):
        signal.signal(signal.SIGALRM, self.handle_timeout)
        signal.alarm(self.seconds)
    def __exit__(self, type, value, traceback):
        signal.alarm(0)


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 607 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信