即使键盘中断,我仍然可以保存结果吗?

Can I save results anyway even when Keyboardinterrupt?

我有一个很长的代码,一直到 运行。我想知道有没有什么方法可以保存结果即使我用键盘打断运行ning的代码?我找到的所有示例都使用了 Keyboardinterrupt 除外,所以我不知道这是否是正确的代码。

更具体地说:我有一段代码以将结果保存在列表中并returning 列表结尾。在这种情况下,有没有办法在键盘中断的情况下 return 列表?我可以使用 if keyboardinterrupt 语句吗?

我的代码:

# removed is a very long list

for a, b in itertools.combinations(removed, 2):
        temp = [a,b]
        Token_Set_Ratio = fuzz.token_set_ratio(temp[0],temp[1])
        if Token_Set_Ratio > k:
            c = random.choice(temp)
            if c in removed:
                removed.remove(c)
            else:
                pass
        else:
            pass
    return removed

我在哪里可以添加 python 即使发生键盘中断也能保留删除的部分?

您可以使用 try-exceptKeyboardInterrupt:

def your_function():
    removed = [...]

    try:
        # Code that takes long time
        for a, b in itertools.combinations(removed, 2):
            ...
        return removed
    except KeyboardInterrupt:
        return removed

一个小例子:

import time

def foo():
    result = []
    try:
        # Long running code
        for i in range(10000):
            result.append(i)
            time.sleep(0.1)
        return result
    except KeyboardInterrupt:
        # Code to "save"
        return result

print(foo())

当您在执行结束前按 Ctrl-C 时,将打印部分列表。