我正在构建这个简单的应用程序,我注意到当curses运行时,“top”中的CPU负载是100%..这看起来很糟糕。谁能解释一下呢?
def Run(self, stdscr):
self.screen = stdscr
curs_set(0)
self.screen.nodelay(1)
self.y_max = self.screen.getmaxyx()[0]
self.x_max = self.screen.getmaxyx()[1]
for e in self.Inv:
self.Create_Win(self.Inv.index(e), e)
self.test_win = self.screen.derwin(1, self.x_max, 10, 0)
self.test_win.addstr(self.TargetDict["Target_1"]["Obj"].Name)
running = True
while running:
self.screen.refresh()
q = self.screen.getch()
#Press q to exit program
if q == ord("q"):
running = False
这是程序在运行时的外观。一旦我用'q'终止程序,它就会恢复正常。
答案 0 :(得分:3)
问题是对getch
的调用没有阻塞,因此程序不断循环通过while
循环。来自getch
documentation:
获得一个角色。请注意,返回的整数不必是ASCII范围:功能键,小键盘键等返回高于256的数字。在无延迟模式下,如果没有输入则返回-1,否则getch()等待直到按下一个键。
您的程序在循环之前设置nodelay
:
self.screen.nodelay(1)