【发布时间】:2020-08-03 15:00:17
【问题描述】:
在 Python 中实现无限循环的最佳方法是什么,这样给定的函数会一次又一次地运行,直到用户按下一个键?我可以想到几种方法这个,其中一个涉及 Ctrl-C,另一个涉及线程:两者看起来都非常hacky,让我感觉我错过了一些非常明显的东西。
这是Ctrl-C 方法的一个最小工作示例:
def run():
my_object = MyClass()
my_object.lay_the_table()
print("Telling my_object to keep refreshing... Use Ctrl-C to stop.")
while True:
my_object.refresh()
my_object.tidy_away()
if __name__ == "__main__":
run()
这种方法的缺点很明显:
- 永远不会调用
tidy_away()方法。 - 我无法想象邀请用户手动终止程序是一种好的做法。
但是有什么更好的方法呢?
我真的很惊讶我在 Stack Overflow 上找不到与这个问题类似的问题 - 对于 Python 。再说一次,很可能是我没有正确使用搜索功能!很高兴将此问题标记为重复,如果它为我指明了解决方案。
【问题讨论】:
-
我认为您的问题实际上只是检测到按键:stackoverflow.com/questions/24072790/detect-key-press-in-python/…
-
如果你确实想要由 ctrl-C 驱动的东西,为什么不只是
try: [your infinite loop]except KeyboardInterrupt: my_object.tidy_away() -
确保调用该行的最佳方法是使用
finally而不是except。