1

私はこの単純なアプリケーションを構築していますが、curses が実行されている間、「トップ」の 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」でプログラムを終了するとすぐに、正常に戻ります。

4

2 に答える 2

3

問題は、への呼び出しgetchがブロックされていないため、プログラムが常にwhileループを循環していることです。getchドキュメントから:

キャラクターを取得します。返される整数は ASCII 範囲内である必要はないことに注意してください: ファンクション キー、キーパッド キーなどは 256 より大きい数値を返します。遅延なしモードでは、入力がない場合は -1 が返されます。キーが押されます。

プログラムnodelayはループの前に次のように設定します。

self.screen.nodelay(1)
于 2013-03-28T16:16:13.260 に答える