Python 在不退出程序的情况下使用 ctrl + c 取消进程?
Python cancel process using ctrl + c without quitting program?
我希望能够通过按 ctrl + c 退出我的程序正在执行的操作,但不完全退出程序。我确定某处有关于此的线程,但我找不到与我想要的相关的任何内容。这就是我想要的
def sleep():
time.sleep(3600)
print("Hello!")
.
>Start program
>Hit ctrl + c 10 seconds later,
>Program prints 'Hello!'
您可以将您的函数包装在 try except 块中并侦听 KeyboardInterrupt,类似于 this post。
完整代码:
def sleep():
try:
time.sleep(3600)
except KeyboardInterrupt:
pass
print("Hello!")
如前所述,您可以捕获键盘中断。作为一个额外的问题,让 2 次 ctrl-c 按下来终止程序是很常见的。在这个例子中,如果用户在 2 秒内点击弹出按钮两次,我们真的会退出。
import time
kb_interrupt_time = 0.0
for i in range(100):
try:
time.sleep(1)
except KeyboardInterrupt:
now = time.time()
if now - kb_interrupt_time < 2:
print("done")
raise
print("interrupted")
kb_interrupt_time = now
print("beep", i)
我希望能够通过按 ctrl + c 退出我的程序正在执行的操作,但不完全退出程序。我确定某处有关于此的线程,但我找不到与我想要的相关的任何内容。这就是我想要的
def sleep():
time.sleep(3600)
print("Hello!")
.
>Start program
>Hit ctrl + c 10 seconds later,
>Program prints 'Hello!'
您可以将您的函数包装在 try except 块中并侦听 KeyboardInterrupt,类似于 this post。
完整代码:
def sleep():
try:
time.sleep(3600)
except KeyboardInterrupt:
pass
print("Hello!")
如前所述,您可以捕获键盘中断。作为一个额外的问题,让 2 次 ctrl-c 按下来终止程序是很常见的。在这个例子中,如果用户在 2 秒内点击弹出按钮两次,我们真的会退出。
import time
kb_interrupt_time = 0.0
for i in range(100):
try:
time.sleep(1)
except KeyboardInterrupt:
now = time.time()
if now - kb_interrupt_time < 2:
print("done")
raise
print("interrupted")
kb_interrupt_time = now
print("beep", i)