我在我的應用程序中有一個閱讀線程,用於偵聽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