我使用套接字写了一个小的IRC客户端。不,我不想使用像扭曲的图书馆。 ;)我正在向stdout打印消息,这一切都很好。是否有一种打印新消息的好方法,但也可以通过线程等方式收听用户输入? 这是一个小片段:
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!
答案 0 :(得分:2)
您可以创建一个控制台锁。在线程中有多个方便的Lock对象;我创建了一个如:
consoleLock = threading.Lock()
然后每当你想打印到控制台时:
consoleLock.acquire()
print 'what to print'
consoleLock.release()
这将使打印到控制台线程安全。至于同时收听用户输入,您究竟想要如何实现这一目标?输入过程中打印的任何内容仍然会在输入区域的中间结束,因为只有一个控制台要打印到(并且读取输入打印到控制台)。