heap相关内容

了解如何在Python中创建堆

例如,Python中的collections.Count.most_common函数使用heapq模块返回文件中最常见单词的计数. 我已经遍历了heapq.py文件,但是在理解如何相对于假设的单词创建/更新堆方面遇到了一些麻烦. 所以,我认为对我来说最好的理解方法是弄清楚如何从头开始创建堆. 有人可以提供伪代码来创建表示字数的堆吗? 解决方案 这是此处找到的代码的略微修改 ..
发布时间:2020-11-22 20:38:13 Python

Python:从堆中删除元素

Python具有heapq模块,该模块实现堆数据结构,并且支持一些基本操作(push,pop). 如何从O(log n)的堆中删除第i个元素? heapq甚至有可能还是我必须使用另一个模块? 注意,文档底部有一个示例: http://docs.python.org/library/heapq.html 这暗示了一种可能的方法-这不是我想要的.我希望删除该元素,而不仅仅是标记为已删除. ..
发布时间:2020-11-22 20:37:09 Python

增加堆以避免WEKA中的内存不足错误

我正在尝试通过以下命令行使用J48分类器在WEKA中运行分类器: $ java -Xmx2048m -cp /home/weka-3-7-9/weka.jar weka.classifiers.trees.J48 -t input.arff -i -k -d J48-data.model & 尽管我的船长是43.8 M,我将堆空间增加到了2048m, 我仍然收到以下错误: Exce ..
发布时间:2020-11-22 20:36:50 其他开发

如何避免在heapq中使用_siftup或_siftdown

我不知道如何在不使用_siftup或_siftdown的情况下有效解决以下问题: 当一个元素发生故障时,如何恢复堆不变式? 换句话说,将heap中的old_value更新为new_value,并保持heap工作.您可以假设堆中只有一个old_value.功能定义如下: def update_value_in_heap(heap, old_value, new_value): ..
发布时间:2020-11-22 20:35:41 Python

特定于线程的堆分配

是否可以使某些线程子集(例如来自特定ThreadPool的线程)从自己的堆中分配内存?例如.大多数线程是从常规共享堆中分配的,而很少有工作线程是从单个堆中分配的(每个线程1:1). 目的是确保在共享环境中安全地执行代码-典型的工作程序是无状态的,并且在单独的线程上运行,处理一个请求不应占用超过4MB的堆. 更新#1 Re:但是,您为什么担心“安全执行"和堆消耗的不可预测的增长? ..
发布时间:2020-11-22 20:35:36 Java开发

如何确定Python的heapq库管理的项目顺序?

给我的印象是,第一个值是确定堆中某个值位置的因素,但事实并非如此. from __future__ import print_function import heapq q = [] heapq.heappush(q, (10, 11)) heapq.heappush(q, (11, 12)) heapq.heappush(q, (9, 10)) print(q) 这给了我一个输出 ..
发布时间:2020-11-22 20:35:32 Python

如何在Python中实现优先级队列?

很抱歉这样一个愚蠢的问题,但是Python文档令人困惑. 链接1:队列实施 http://docs.python.org/library/queue.html 它说s Queue具有优先级队列的构造.但是我找不到如何实现它. class Queue.PriorityQueue(maxsize=0) 链接2:堆实现 http://docs.python.org/library/ ..
发布时间:2020-11-22 20:35:30 Python

将指定的初始化程序与堆一起使用

一个人可以使用designated initializers,如下所示(对于"billy"而言),没有问题,但是当对动态内存使用相同的初始化方法时,在编译时它将中断. 使用指定的初始化程序有哪些限制? 除了我们要写入的 where (即地址)之外,这两个初始化有何不同?为什么我们不能在动态内存中使用指定的初始值设定项? struct student{ char *name ..
发布时间:2020-11-22 20:35:24 其他开发

如何在Python的heapq中实现减键功能?

我知道可以在O(log n)中实现减键功能,但是我不知道怎么办? 解决方案 要有效实现"decrease-key",您需要访问“减少此元素并将其与子元素交换,直到恢复堆条件"的功能. ".在 heapq.py 中,这称为_siftdown(和类似_siftup进行递增).因此,好消息是这些函数在那里...坏消息是它们的名称以下划线开头,表明它们被视为“内部实现细节",不应由应用程序代码直接 ..
发布时间:2020-11-22 20:35:22 Python

如何关闭容错堆?

我最近在启动应用程序时开始在Visual Studio 2005输出窗口中看到此行: FTH:(7156):***容错堆填充程序应用于当前进程.这通常是由于先前的崩溃造成的. *** 我尝试按照此处的说明关闭容错堆: http://msdn.microsoft.com/en-us/library/dd744764(VS.85).aspx 我正在运行Windows 7 64位版本,因 ..
发布时间:2020-11-22 20:35:18 其他开发

术语“堆"的起源是什么?免费商店?

我正试图找到免费商店通常被称为堆的正式理由(或足够好的理由). 除了它从数据段的末尾开始增长之外,我真的没有想到一个很好的理由,尤其是因为它与堆数据结构几乎没有关系. 注意:不少人提到这只是一堆杂乱无章的东西.但是对我而言,术语堆在物理上是指一堆在物理上相互依赖的东西.您从下面拉出一个,其他所有东西都塌下来,等等.换句话说,对我来说,堆声音组织得很松散(例如,最上面的东西在上面).这并 ..
发布时间:2020-11-22 20:34:57 其他开发

Eclipse在Ant构建上用完了堆空间

ext-Myself和两个同事一直在从事GWT项目并在Eclipse中进行编码.该项目正在不断发展,我们正在招募一些新的开发人员来提供帮助.在他们开始工作之前,我要负责设置他们的工作站.按照基本的GWT设置指南(http://code.google.com/webtoolkit/usingeclipse.html) ,我们当前的系统都可以直接使用. 在我的操作系统上,我没有更改eclipse为 ..
发布时间:2020-11-21 22:20:05 Java开发

如何查找哪些对象正在创建最多的垃圾

我有一个包含80个不同类的80个实例的应用程序.由于我的应用程序是实时的,因此这些类的某些子集生成的垃圾数量是不可接受的,并且停止世界暂停的时间太长. 我要查找的是哪些类负责创建堆上最大数量的对象(不是集合大小,而是对象的原始数量),因为这是导致世界停顿的原因花这么长时间. 我如何找到这个? 如果需要JVisualVM,我有这个. 解决方案 一种非常轻量级的方法来查看每个 ..
发布时间:2020-11-12 20:04:18 Java开发

垃圾收集器在堆中移动数据时,引用是否会更新?

我读到GC(垃圾收集器)出于性能原因而在Heap中移动数据,我不十分清楚为什么它是随机访问内存,也许是为了更好的顺序访问,但是我不知道在这样的情况下Stack中的引用是否会更新堆中发生移动.但是也许偏移地址保持不变,但是数据的其他部分却被垃圾收集器移动了,但我不确定. 我认为这个问题与实现细节有关,因为不是所有垃圾收集器都可以执行这种优化,或者不是这样做,而是不更新引用(如果这是垃圾收集器实 ..
发布时间:2020-11-12 19:55:14 C#/.NET

如何在年轻一代收藏中找到活物?

我了解YGC花费的时间与伊甸园中的活动物体数量成正比.我也了解在Major集合中如何找出活动对象(线程堆栈中的所有对象,静态对象以及可从这些对象传递而来的其他对象.) 但是我不明白在年轻一代收藏中如何找到活物? 如果它解析线程堆栈,那么它需要解析eden +占用空间,我认为不是这种情况.那么JVM如何在eden中找到活动对象并将其复制到To Survivor空间中? 解决方案 如 ..
发布时间:2020-11-12 19:54:50 Java开发

如何增加android虚拟设备的最大堆大小?

我想用Eclipse增加android虚拟设备映射堆的大小。我试图在Eclipse AVD Manager中将Max VM应用程序堆大小设置为128,但它不起作用,行 Runtime.getRuntime()。maxMemory()/(1024 * 1024); 无论设置的堆大小如何,code>始终返回48。设备RAM大小设置为512。选定的目标是Android 4.1.2(API级别16)。此外 ..
发布时间:2020-10-29 05:43:16 移动开发

纱线堆的使用量随时间增长

我们在AWS EMR上运行Spark Streaming作业。该作业将稳定运行10到14个小时,然后崩溃,并且stderr,stdout或Cloudwatch日志中没有明显的错误。在此崩溃之后,任何尝试重新启动作业的尝试都会立即失败,并显示“无法分配内存”(errno = 12)(完整的消息)。 对Cloudwatch指标和Ganglia的调查均显示 driver.jvm.heap.used ..
发布时间:2020-10-29 05:29:55 其他开发

如何静态识别动态堆分配?

我将在应用程序中删除“尽可能多的”动态堆分配,我想知道如何确保自己不会错过任何内容。 当前,我正在寻找一种方法来轻松甚至自动判断代码的任何部分(或哪些部分)可能调用 new / 删除或 malloc / 免费,而无需动态跟踪分配(即通过静态代码分析或来自编译器/链接器的反馈)。 很容易发现(或搜索)直接调用 new 或 malloc 当然: int main(){ auto ..
发布时间:2020-10-29 03:15:07 C/C++开发

为什么malloc()交替调用mmap()和brk()?

我是C和堆内存的新手,仍然在努力理解动态内存分配。 我跟踪了Linux系统调用,发现如果我使用 malloc 请求少量的堆内存,然后 malloc 内部调用 brk 。 但是如果我使用 malloc 请求大量的堆内存,那么 malloc 内部调用 mmap 。 因此, brk 和 mmap ,但理论上我们应该能够使用 brk 分配堆内存,而不管请求的大小如何。那么为什么在分配大量 ..
发布时间:2020-10-27 02:18:23 服务器开发

如何在Dijkstra算法中使用二进制堆?

我正在编写dijkstra算法的代码,对于我们应该找到距当前正在使用的节点最小距离的节点的那部分,我正在使用一个数组,并将其完全遍历以找出该节点。 / p> 这部分可以用二进制堆代替,我们可以在O(1)时间内计算出节点,但是我们还会在进一步的迭代中更新节点的距离,我会合并该堆吗? 对于数组,我要做的就是转到(ith -1)索引并更新该节点的值,但是在Binary堆中无法完成相同的操作, ..
发布时间:2020-10-22 01:21:59 其他开发