您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何检查任务是否已经在python Queue中?

如何检查任务是否已经在python Queue中?

如果您不关心项目的处理顺序,请尝试在内部Queue使用的子类set

class SetQueue(Queue):

    def _init(self, maxsize):
        self.maxsize = maxsize
        self.queue = set()

    def _put(self, item):
        self.queue.add(item)

    def _get(self):
        return self.queue.pop()

正如Paul McGuire指出的那样,这将允许在从“待处理”集中删除重复项并将其尚未添加到“已处理”集中后添加重复项。为了解决这个问题,您可以将两个集合都存储在Queue实例中,但是由于您使用更大的集合来检查项目是否已处理,因此您也可以返回到queue该集合以正确地订购请求。

class SetQueue(Queue):

    def _init(self, maxsize):
        Queue._init(self, maxsize) 
        self.all_items = set()

    def _put(self, item):
        if item not in self.all_items:
            Queue._put(self, item) 
            self.all_items.add(item)

与单独使用一个集合相比,此方法的优点是Queue方法是线程安全的,因此您不需要其他锁定即可检查另一个集合。

python 2022/1/1 18:25:08 有176人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶