如何防止 curses 应用程序出现故障?

How to prevent glitches appear in curses app?

我正在 Python 中使用 curses 开发应用程序。应用程序启动后几秒钟,一些故障随机出现。

起初我以为是因为tmux和$TERM变量,但它被设置为screen-256。 运行 tmux 之外的应用程序也会导致这种故障。

这里是初始化的代码curses screen

这个例子是这样做的:

import curses
from threading import Thread


class Screen(object):
    def __init__(self):
        self.maxx = None
        self.maxy = None

self.run()

暗示您的应用程序可以有多个线程写入屏幕。但是 curses 通常不是线程安全的,因此您最终会使用它们的线程 - 以及其他线程 - 全局或静态变量的值。它不会很好地工作。

如果您想在多线程应用程序中使用 curses,您必须确保只有一个线程使用 curses,或者(可能)编译您自己的副本ncurses 库的一部分,它对可重入代码提供基本支持,并在 that 配置的约束下工作。

进一步阅读: