我有一个包含多个循环的Python脚本,当我执行它时,它会无限期地继续运行,直到我手动停止它(通常是通过中断Jupyter中的内核)。虽然我一般不需要阻止它,但有时我需要。为了简化,让我们考虑以下代码:
while True:
print("hello")
countdown(2)
print("hello2")
countdown(2)
print("hello3")
#if F2 has been pressed, yield and error to stop the script
我想在我的Python脚本中实现以下行为:如果在执行print(“hello”)部分时按F2,脚本应该在打印print(“hello3”)后停止。类似地,如果在执行print(“hello2”)部分时按F2,脚本也应该在打印print(“hello3”)后停止。从本质上讲,我希望代码在指定的点停止,而不管我在哪里按F2。此外,我不希望脚本在每次循环迭代时提示我输入,询问是否停止脚本。这是因为我通常不需要以这种方式打断它。
我完全不知道如何实施
3条答案
按热度按时间e37o9pze1#
您可以使用pynput库创建一个等待按键的侦听器。如果监听器检测到按键,则检查是否是F2键,如果是,则设置全局停止标志。
在循环结束时,我们检查停止标志是否被设置,如果是,则退出。下面是一些示例代码:
t40tm48m2#
我赞成@ShadowCrafter_01的建议,因为我非常喜欢它。
我的有点类似,但我使用的不是第三方库,而是Python的线程库。
然而,在这个acse中,我实际上宁愿使用第三方库,但无论如何,这里是我的方法:
底线是;这种功能使得Python在完成任务的同时还保持跟踪其他东西(诸如事件(例如,点击事件/按键事件))需要一些排序并行性。pynput为您自动化了这一点(因此对您隐藏了这一点),而我的方法非常明确(可能是出于说教的原因)。
编辑现在我意识到,因为我使用输入法=>“任意键”的意思是[返回]
zi8p0yeb3#
试试这个,它将从用户的键盘输入
pip install keyboard