简单的python curses-application在运行时使用100%的CPU。这是正常的吗?

时间:2013-03-28 16:11:46

标签: python load curses python-curses

我正在构建这个简单的应用程序,我注意到当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

enter image description here

enter image description here

这是程序在运行时的外观。一旦我用'q'终止程序,它就会恢复正常。

1 个答案:

答案 0 :(得分:3)

问题是对getch的调用没有阻塞,因此程序不断循环通过while循环。来自getch documentation

  

获得一个角色。请注意,返回的整数不必是ASCII范围:功能键,小键盘键等返回高于256的数字。在无延迟模式下,如果没有输入则返回-1,否则getch()等待直到按下一个键。

您的程序在循环之前设置nodelay

self.screen.nodelay(1)