首页 > 解决方案 > 其中一个线程卡住了

问题描述

我编写了一个生产者-消费者脚本,其中有两个队列(比如 q1 和 q2)。脚本中有两个生产者从 q1 读取数据并在 q2 中正确处理一些处理值,现在还有另外两个消费者从 q2 读取值并根据某些定义的条件打印一些值。所有这四个线程都是并行运行的。我正面临消费者在阅读 q2 的所有值后卡住的问题。终止消费者的条件是,如果生产者都已终止并且 q2 为空,但是当我运行此脚本时,它会被其中一个消费者线程卡住,例如,如果消费者 1 完成,则消费者 2 被卡住,反之亦然。

有人能帮我吗?提前致谢!!

class WorkflowProducer1:
    def __init__(self,coord_q,wf_q):
        self.coord_q=coord_q
        self.wf_q=wf_q

    def wf_produce1(self):
        while not self.coord_q.empty():
            coord_id=self.coord_q.get()
            wf_id=workflow_finder(coord_id)
            if wf_id!='':
                self.wf_q.put(wf_id)
        if self.coord_q.empty():
            print("producer 1 finished")


class WorkflowConsumer1:
    def __init__(self,wf_q):
        self.wf_q=wf_q

    def wf_consume1(self):
        while not self.wf_q.empty() or thread1.is_alive() or thread2.is_live():
            wf_id=self.wf_q.get()
            workflow_validator(wf_id)

标签: pythonmultithreading

解决方案


推荐阅读