【问题标题】:How can I implement a timeout on a function that hangs due to a library function? [duplicate]如何在由于库函数而挂起的函数上实现超时? [复制]
【发布时间】:2020-04-21 06:38:55
【问题描述】:

我正在构建一个程序来验证给定文件树中的媒体和文档文件。当它尝试读取 pdf(使用 PyPDF2)时,它偶尔会冻结程序。我想在函数上实现超时,以便它超时并记录错误而不是崩溃。 这是我的 PDF 函数代码:

def pdf_verify(file, good_files, bad_files):
    try:
        PyPDF2.PdfFileReader(open(file, "rb"))
        good_files.append(file)
    except:
        bad_files.append(file)

    return good_files, bad_files

它尝试使用 PyPDF2 打开 PDF 文件,如果无法打开,它会捕获异常并将文件附加到坏文件列表中。我知道有一种方法可以在 Linux 上执行此操作,但我需要该程序可以在 Windows 上运行。有没有办法做到这一点?谢谢!

【问题讨论】:

    标签: python windows pdf


    【解决方案1】:

    有多种方法可以处理这个问题:

    1. 使用线程并监控花在该函数上的时间
    2. 使用信号 - 检查limit execution time of a function
    3. 等待程序发生异常并使用 except 捕获它

    【讨论】:

      猜你喜欢
      • 2012-01-28
      • 2017-03-25
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 2014-05-23
      相关资源
      最近更新 更多