其中一个线程重写Python中的控制台输入

2024-06-17 12:52:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个与线程控制台应用程序的问题。在第一个线程中,我有一个函数,它将符号“x”写入输出。在第二个线程中,我有一个函数,它等待用户输入。(符号“x”只是这个问题的随机选择)。你知道吗

例如

线程1:


    while True:
        print "x"
        time.sleep(1)

螺纹2:


    input = null
    while input != "EXIT":
        input = raw_input()
        print input

但是当我将线程2的文本写入控制台时,我的输入文本(例如,HELLO)被重写。你知道吗


    x
    x
    HELx
    LOx
    x
    x[enter pressed here]

    HELLO
    x
    x

有什么方法可以防止我的输入文本被符号“x”重写吗?你知道吗

谢谢你的回答。你知道吗


Tags: 函数用户文本true应用程序helloinputtime
1条回答
网友
1楼 · 发布于 2024-06-17 12:52:54

在控制台中,标准输出(由正在运行的程序生成)和标准输入(由您的按键生成)都被发送到屏幕上,因此它们最终可能都是混合的。你知道吗

在这里,线程1每秒逐行写入1x,因此,如果您花了1秒以上的时间键入HELLO,那么将生成您提交的控制台内输出。你知道吗

如果您想避免这种情况,请给出一些非详尽的建议:

  • 检测到按键时临时中断thread1输出

  • 使用诸如ncurses之类的库为程序输出和用户输入创建单独的区域

  • 只需抑制thread1输入,或者将其发送到文件。

相关问题 更多 >