我在我的应用程序中有一个阅读线程,用于侦听stdin
。它阻塞,直到有些输入可用。当有一些到达时,它接受这些行,检查它们是否是有效的命令并将它们放入队列中。如何打破线程中文件行的迭代
def ReadCommands(queue):
for cmd in stdin:
if cmd=="":
break
# Check if cmd is valid and add to queue
queue = Queue()
thread = Thread(target=ReadCommands, args=(queue,))
thread.start()
现在当主程序想要退出时,它首先必须加入这个阅读线程。问题是线程在我无法控制的循环中。即使stdin.close()
也不起作用。
我怎样才能打破主线读取线程中的for循环?
另外,我怎样才能写for循环(有一段时间?)能够添加我自己的布尔变量,将打破循环?当心我不想要一个积极的等待循环!
threading.event可能会对您有所帮助。你可以通过is_set()来检查退出条件。 –
这是链接:https://docs.python.org/2/library/threading.html#event-objects –
我不认为这与你的问题有关,但不是'args'应该是一个元组?在这种情况下,您应该执行'args =(queue,)' – Kevin