即使键盘中断,我仍然可以保存结果吗?
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
-except
和 KeyboardInterrupt
:
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 时,将打印部分列表。
我有一个很长的代码,一直到 运行。我想知道有没有什么方法可以保存结果即使我用键盘打断运行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
-except
和 KeyboardInterrupt
:
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 时,将打印部分列表。