1
我想實現一個Queue
處理線程在python如下:。加入可能的空隊列在python
from queue import Queue
from threading import Thread
import sys
class Worker(Thread):
def __init__(self, queue):
# Call thread constructor
self.queue = queue
def run(self):
while True:
task = self.queue.get()
# doTask()
self.queue.task_done()
queue = Queue()
thread = Worker(thread)
thread.start()
while True:
inp = user_input()
if condition(inp):
queue.put(sometask())
else:
queue.join()
thread.join()
sys.exit(0)
在這個例子中,假設用戶決定exit
不添加到隊列中的任何項目。然後我的線程將被阻止在self.queue.get
和我queue.join()
將無法正常工作。因此,我無法執行正確的exit
。
我該如何處理這個問題?
這是一個好主意。但是,我將不得不在每個1s迭代循環。我可以觸發一些可以動態解鎖'queue.get'的事件嗎? – niyasc
@niyasc你指的是哪一個循環?線程工作循環或將項目放入隊列的循環?爲什麼你需要迭代它每1秒? – FamousJameous
我指的是'Worker'類中的循環。按照這個實現,'get'方法將在'1s'中超時,並且它將用於下一次迭代。不是嗎? – niyasc