小编Jim*_*Jim的帖子

从raw_input()读取输入,而不会被Python中的其他线程覆盖

我试图让用户使用raw_input()在控制台上输入命令,这很好用.问题是我有后台线程偶尔会将日志信息输出到屏幕上,当它们发生时它们会搞砸输入提示(因为输出会转到光标恰好在哪里).

这是一个小Python程序,说明了我的意思.

#!/usr/bin/env python
import threading
import time

def message_loop():
    while True:
        time.sleep(1)
        print "Hello World"

thread = threading.Thread(target = message_loop)
thread.start()

while True:
    input = raw_input("Prompt> ")
    print "You typed", input
Run Code Online (Sandbox Code Playgroud)

这是我运行它时的样子:

Prompt> Hello World
Hello World
Hello World
Hello World
test
You typed test
Prompt> Hello World
Hello World
Hello World
hellHello World
o
You typed hello
Prompt> Hello World
Hello World
Hello World
Hello World
Run Code Online (Sandbox Code Playgroud)

我想要的是提示与线程的输出一起移动.像这样:

Hello World
Hello World
Prompt> test
You typed test
Hello World …
Run Code Online (Sandbox Code Playgroud)

python multithreading raw-input

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

multithreading ×1

python ×1

raw-input ×1