python线程:无限循环直到条件不起作用

时间:2018-08-08 21:29:55

标签: python multithreading

我正在尝试制作一个多线程python程序,该程序不断循环遍历队列对象,直到满足条件为止。我有一个问题,另一个问题。问题是,应满足条件后,某些线程仍在运行。这是我初始化线程的方法:

for i in range(0, number_of_threads):
    print("Created thread: "+ str(i))
    t = threading.Thread(target=loopThrough)
    #t.daemon = True
    t.start()
    threads[i] = t
    time.sleep(1)

这有效,并且允许所有线程调用该函数。这是功能loopThrough:

def loopThrough():
    global found
    global word_queue
    while not found:
        if word_queue.empty():
            word_queue = buildQ()
            print("Built queue because it was empty")
        word = word_queue.get()
        if word == "happy":
            check(word)

检查功能(在loopThrough之前定义)

def check(word):
    global found
    found = True
    print(len(word))

这是一个简化,因为实际的critera / etc既冗长又冗长。这是我的问题。当我调用check函数时,我将found标志设置为true,因此它不再循环。但是,其他线程仍然循环。我理想地要做的是杀死每个线程,并使用主线程调用check函数。

最后,我还有其他担忧。我想知道如何制作一个队列对象,该对象仅使用刚得到的对象并将其移动到队列的末尾。我认为建立这样的队列效率不高。

0 个答案:

没有答案