我使用套接字编写了一个小型 IRC 客户端。不,我不想使用像扭曲这样的库。 ;)我正在将消息打印到标准输出,效果很好。有没有一种好方法可以打印新消息,同时也可以使用线程之类的东西来监听用户输入? 这是一个小片段:
from threading import Thread
import time
def print_stuff():
while True:
print "New PRIVMSG!"
time.sleep(2)
t = Thread(target=print_stuff)
t.start()
while True:
raw_input(">>")
这产生的输出并不完全是我需要的...... 输出看起来像这样:
>>New PRIVMSG!
test test tesNew PRIVMSG!
有没有办法让这个在 cmd 或 bash 中工作?
提前谢谢您!
编辑: 输出应如下所示。
New PRIVMSG!
New PRIVMSG!
>> hello test
New PRIVMSG!
最佳答案
您可以创建控制台锁。在线程中有多个方便的 Lock 对象;我会创建一个,例如:
consoleLock = threading.Lock()
然后每当你想打印到控制台时:
consoleLock.acquire()
print 'what to print'
consoleLock.release()
这将使打印到控制台线程安全。至于同时监听用户输入,你到底想如何实现呢?输入期间打印的任何内容仍将最终出现在输入区域的中间,因为只有一个控制台可以打印(并且读取的输入会打印到控制台)。
关于Python:同时线程化标准输入和标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31521641/