设为首页 加入收藏

TOP

Python3 queue队列类
2019-09-17 14:35:02 】 浏览:111
Tags:Python3 queue 队列

class queue.PriorityQueue(maxsize=0)


优先级队列构造函数。 maxsize 是个整数,用于设置可以放入队列中的项目数的上限。当达到这个大小的时候,插入操作将阻塞至队列中的项目被消费掉。如果 maxsize 小于等于零,队列尺寸为无限大


最小值先被取出( 最小值条目是由 sorted(list(entries))[0] 返回的条目)。条目的典型模式是一个以下形式的元组: (priority_number, data) 。


如果 data 元素没有可比性,数据将被包装在一个类中,忽略数据值,仅仅比较优先级数字 :


from dataclasses import dataclass, field
from typing import Any


@dataclass(order=True)
class PrioritizedItem:
    priority: int
    item: Any=field(compare=False)


队列对象 (QueueLifoQueue, 或者 PriorityQueue) 提供下列描述的公共方法。


提供了两个方法,用于支持跟踪 排队的任务 是否 被守护的消费者线程 完整的处理。


如何等待排队的任务被完成的示例:


def worker():
    while True:
        item = q.get()
        if item is None:
            break
        do_work(item)
        q.task_done()


q = queue.Queue()
threads = []
for i in range(num_worker_threads):
    t = threading.Thread(target=worker)
    t.start()
    threads.append(t)


for item in source():
    q.put(item)


# block until all tasks are done
q.join()


# stop workers
for i in range(num_worker_threads):
    q.put(None)
for t in threads:
    t.join()


一道leetcode题目:


347. Top K Frequent Elements   前K个高频元素


给定一个非空的整数数组,返回其中出现频率前 高的元素。


示例 1:


示例 2:


说明:


class Solution:
    def topKFrequent(self, nums, k: int):
        if k<0 or k>len(nums): return []
        from queue import PriorityQueue
        from collections import defaultdict
        queue = PriorityQueue()
        d = defaultdict(int)
        res = []
        for i in nums:
            d[i]+=1
        d = list(d.items())
        print(d)
        for i in range(len(d)):
            queue.put([-d[i][1],d[i][0]])
        for i in range(k):
            res.append(queue.get()[1])
        return res


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SciPy模块应用 下一篇Pytorch 常用函数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目