gpt4 book ai didi

Python 诅咒 : Exiting a program fast

转载 作者:行者123 更新时间:2023-12-01 03:39:28 25 4
gpt4 key购买 nike

快速退出带有使用curses模块的无限循环的Python程序的最佳方法是什么?

我尝试在循环末尾添加 nodelay() 方法:

if screen.getch() == ord('q'):
break

但是,在循环的一次迭代中调用所有函数需要 2-3 秒。由于应用程序的原因,运行循环频率超过每 5 秒是没有意义的。这意味着,为了使退出程序的方式起作用,我有时必须按住“q”2-8 秒。

我的代码如下所示:

import curses
import time

def main(screen):
refresh_rate = 5
screen.nodelay(1)

# Infinite loop. Displays information and updates it
# every (refresh_rate) # of seconds

while True:

# Makes several http requests
# and passes responses through multiple functions

# Escape infinite loop
if screen.getch() == ord('q'):
break

# Wait before going through the loop again
time.sleep(refresh_rate)

if __name__ == "__main__":
curses.wrapper(main)

我的另一个解决方案是将 while True 替换为:

loop = 1
while loop:

#Loop code

if screen.getch() == ord('q'):
loop = -1

这样,就不需要按住“q”来退出程序了。但按一次“q”后仍可能需要长达 8 秒的时间才能退出。

出于显而易见的原因,这似乎不是退出程序的最佳方式。我很确定应该有更好(更快)的解决方案。

除此之外,该程序运行良好。这是 2 个文件,超过 300 行,因此我仅发布代码的相关部分以及我尝试的解决方案。

最佳答案

鉴于您已经有了节点布局,通常的方法是使用时间较短(20-50 毫秒)的 napm,并实现您的 5 秒目标,在多次(10-25)次重复之后运行函数getch/napms 循环。

混合诅咒和标准 I/O 并不能很好地工作,除非您在两者之间切换时小心刷新内容。

关于Python 诅咒 : Exiting a program fast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39886252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com