标签: priority-queue

Java中的优先级队列

java.util.PriorityQueue允许Comparator在施工时通过.插入元素时,会根据比较器指定的优先级对它们进行排序.

插入元素后,当元素的优先级发生变化时会发生什么?什么时候PriorityQueue重新排序元素?是否可以轮询实际上没有最低优先级的元素?

是否有优先级队列的良好实现,允许有效的优先级更新?

java priority-queue

10
推荐指数
2
解决办法
3534
查看次数

如何在Python中创建唯一的值优先级队列?

Python有Queue.PriorityQueue,但我看不到一种方法来使其中的每个值都是唯一的,因为没有方法可以检查值是否已经存在(如find(name)或类似).此外,PriorityQueue需要优先级保持在该值内,因此我甚至无法搜索我的值,因为我还必须知道优先级.您将使用(0.5,myvalue)作为PriorityQueue中的值,然后它将按元组的第一个元素排序.

另一方面,collections.deque类提供了一个函数,用于检查值是否已经存在并且在使用中更自然(没有锁定,但仍然是原子的),但它没有提供按优先级排序的方法.

stackq上有一些其他实现与heapq,但heapq也使用值内的优先级(例如在元组的第一个位置),所以它似乎不是很好的比较已有的值.

创建python优先级队列

/sf/ask/231432561/

使用唯一值创建原子优先级队列(=可以从多个线程使用)的最佳方法是什么?

我要添加的示例:

  • 优先级:0.2,值:value1
  • 优先级:0.3,价值:价值2
  • 优先级:0.1,值:value3(应首先自动检索)
  • 优先级:0.4,值:value1(即使优先级不同,也不得再次添加)

python priority-queue

10
推荐指数
2
解决办法
6841
查看次数

并行处理严格的消息

在我的JavaEE Web应用程序中,我需要严格按照到达顺序处理传入的消息.我假设我的webapp容器(Tomcat 6)在到达http端口时保留了消息的顺序.

是什么让我头痛,是我在内部处理这些消息的方式.为了改善工作量,我将每个消息的处理附加到ThreadPool,因为这里需要做很多事情,例如XML解析,有时使用外部Web服务来丰富数据.处理完成后,我将消息的java表示推送到复杂的流处理引擎esper.codehaus.org,这是线程安全的.这里,检查不同的模式,其中入口顺序是最高要求,例如现象的阈值超过.

我有想法将每个已处理的消息插入到PriorityQueue中,并在到达时收到优先级ID(在我的Servlet中,每个消息都会递增).问题如下:

从队列中轮询元素(最低ID是队列的头部)以将其插入esper的线程可以跳过ID,因为它不检查丢失的项目.我猜插图效果更好:

在此输入图像描述

对于步骤(1)至(4),一切都按预期工作.但是在步骤(5),QueuePoller检索元素6而不是元素4(稍后在步骤(6)插入).这导致消息顺序:2; 3; 6; 4.

我试图做的是改变轮询队列头部的实现,以遵循严格的ID顺序.意思是,如果下一个ID的元素尚未插入到队列中,则在屏障处等待直到其中.这似乎在前10分钟有效但随后被绞死,可能是由于一个从未插入队列的元素.

过去有过类似问题的人对我有一些暗示吗?

java concurrency priority-queue

10
推荐指数
1
解决办法
1791
查看次数

PriorityQueue.toString错误的元素顺序

我试图在java中使用优先级最低的节点创建优先级队列.但是,我的比较器不工作,输出非常奇怪.我相信我需要改变我的比较器,但我不知道如何改变它.这是我的代码:

public class HuffmanComparator implements Comparator<TreeNodeHuffman> {
    public int compare(TreeNodeHuffman p1, TreeNodeHuffman p2) {
        if (p1.frequency < p2.frequency) return -1;
        if (p1.frequency > p2.frequency) return 1;
        return 0;
    }    
}

public class TreeNodeHuffman {
public static void main(String[] args) {    
    HuffmanComparator compare = new HuffmanComparator();
    TreeNodeHuffman e = new TreeNodeHuffman('e', 12702);
    TreeNodeHuffman t = new TreeNodeHuffman('t', 9056);
    TreeNodeHuffman a = new TreeNodeHuffman('a', 8167);
    TreeNodeHuffman o = new TreeNodeHuffman('o', 7507);
    TreeNodeHuffman i = new TreeNodeHuffman('i', 6966);
    TreeNodeHuffman n = new TreeNodeHuffman('a', …
Run Code Online (Sandbox Code Playgroud)

java printing sorting priority-queue comparator

10
推荐指数
2
解决办法
2353
查看次数

是否有一个Queue(PriorityQueue)实现也是一个Set?

我正在寻找一个也是一个SetPriorityQueue实现.

compareTo,如果它的元素一定不能有要求实施与执行相一致equals.

有没有这样的java实现?

更新:我现在使用SortedSet作为内部集合来实现它.所以我只需要实现缺少的方法来满足队列接口.我也忘了提到它也必须是一个有界的队列,因此它具有容量并在达到容量时丢弃该组的最后一个元素.

java queue priority-queue set

9
推荐指数
2
解决办法
7904
查看次数

设置priority_queue容器的优点

使用stl,priority_queue您可以设置基础容器,例如a vector.为stl指定容器有哪些优点priority_queue

c++ stl priority-queue

9
推荐指数
1
解决办法
5356
查看次数

如何使用新的比较器和NO指定的初始容量创建PriorityQueue?

在Java中,我不知道如何PriorityQueue使用新的比较器创建一个新的比较但没有给出队列长度?我该如何创建它?

我知道我可以写:

Queue<Node> theQueue = new PriorityQueue<Node>(15,new Comparator<Node>();
Run Code Online (Sandbox Code Playgroud)

但是我希望队列可以工作LinkedList,我的意思是它的长度不固定,我怎么能声明呢?

java priority-queue

9
推荐指数
2
解决办法
9945
查看次数

如何根据Element属性从PriorityQueue中删除元素?

我试着Maximum Waiting Time进入我的内心PQueue.这 Maximum Waiting TimePQueue自动检查我是否有任何links等待Maximum Waiting Time删除它.我对我的代码进行了这项更改,但它在删除链接后正好停止了.我想PQueue根据等待时间条件删除我的所有元素.你能告诉我这里缺少什么吗?

这是我的班级:

public class MyClass {

    public static PriorityQueue <LinkNodeLight> PQueue = new PriorityQueue <> (); 


    private static Set<String> DuplicationLinksHub = new LinkedHashSet <> ();         

    private static Integer IntraLinkCount = new Integer (0);                 
    private static Integer InterLinkCount = new Integer (0);                 
    private static Integer DuplicationLinksCount = new Integer (0);     
    private static Integer MaxWaitTime = new Integer (60000); // 1 M= …
Run Code Online (Sandbox Code Playgroud)

java search priority-queue

9
推荐指数
1
解决办法
820
查看次数

如何在 celery task.apply_async 中使用优先级

test在芹菜中有一个队列,我已经为它定义了一个任务:

@celery_app.task(queue='test', ignore_result=True)
def priority_test(priority):
    print(priority)
Run Code Online (Sandbox Code Playgroud)

刚刚打印argument.I要设置priority其定义属性在这里进行appy_async。所以,我写了一个for loop这样的:

for i in range(100):
    priority_test.apply_async((i%10,), queue="test", priority=i%10)
Run Code Online (Sandbox Code Playgroud)

我希望看到这样的结果:

[2017-12-26 17:21:37,309: WARNING/ForkPoolWorker-1] 10
[2017-12-26 17:21:37,311: WARNING/ForkPoolWorker-1] 10
[2017-12-26 17:21:37,314: WARNING/ForkPoolWorker-1] 10
[2017-12-26 17:21:37,317: WARNING/ForkPoolWorker-1] 9
[2017-12-26 17:21:37,319: WARNING/ForkPoolWorker-1] 9
[2017-12-26 17:21:37,321: WARNING/ForkPoolWorker-1] 9
[2017-12-26 17:21:37,323: WARNING/ForkPoolWorker-1] 8
[2017-12-26 17:21:37,326: WARNING/ForkPoolWorker-1] 8
[2017-12-26 17:21:37,329: WARNING/ForkPoolWorker-1] 8
[2017-12-26 17:21:37,332: WARNING/ForkPoolWorker-1] 7
[2017-12-26 17:21:37,334: WARNING/ForkPoolWorker-1] 7
[2017-12-26 17:21:37,336: WARNING/ForkPoolWorker-1] 7
[2017-12-26 17:21:37,341: WARNING/ForkPoolWorker-1] 6
[2017-12-26 17:21:37,344: …
Run Code Online (Sandbox Code Playgroud)

python queue priority-queue rabbitmq celery

9
推荐指数
1
解决办法
4256
查看次数

用于在 Python 中构建 PriorityQueue 的自定义比较器

我试图在Python中使用 PriorityQueue 构建一个优先级队列,但我希望它在将元素传递给函数后使用函数的返回值,而不是考虑进行优先级比较的元素,类似于sorted(mtlist,key = myfun),有没有办法实现这一点,

python priority-queue

9
推荐指数
2
解决办法
2万
查看次数

标签 统计

priority-queue ×10

java ×6

python ×3

queue ×2

c++ ×1

celery ×1

comparator ×1

concurrency ×1

printing ×1

rabbitmq ×1

search ×1

set ×1

sorting ×1

stl ×1