【发布时间】:2018-01-22 21:08:46
【问题描述】:
我正在进行长时间(几天)的处理。我希望能够随时暂停并恢复它:
while True:
do_the_work() # 100 millisec per call
if keypressed():
print "Processing paused. Please do another keypress to resume"
raw_input()
我应该使用什么函数来代替伪代码keypressed()?
显然raw_input() 在这里不起作用,因为它会在每次调用do_the_work() 之后等待。
也使用了
try: ...
except KeyboardInterrupt: ...
不会工作,因为它会退出循环,而不是暂停/恢复。另一方面,如果try / except 在循环内部,它不会退出循环,但如果它发生在do_the_work() 中间会导致问题。
【问题讨论】:
-
您可以写入文件并让您的代码定期检查该文件。
-
> using a try/except would exit the loop如果它在循环内,则不会。不过,它可能会从do_the_work()函数中引发并导致问题。 -
@PedrovonHertwig:是的,如果它在
do_the_work()的中间提出,它会引起问题。我编辑了 OP 以提及这一点。
标签: python windows keyboard interrupt