[Biopython-dev] Bio.PDB.KDTree test for memory leak

Peter biopython at maubp.freeserve.co.uk
Fri Feb 12 01:10:13 EST 2010


On Thu, Feb 11, 2010 at 12:31 PM, Kristian Rother <krother at rubor.de> wrote:
>
> Hi,
>
> I've encountered a problem with running KDTree: it leaks memory.
> The code below fills 1GB memory within a minute.
>
> Running the GC doesn't help (it slows the process down, but only because
> the GC is much slower than KDTree.

You mean something like this?

import gc
from Bio.KDTree.KDTree import *
from numpy.random import random

nr_points=1000
dim=3
bucket_size=10
coords=(200*random((nr_points, dim)))

while True:
   kdtree=KDTree(dim, bucket_size)
   kdtree.set_coords(coords)
   del kdtree #explicitly tell Python it can GC this object
   gc.collect() #force Python to run GC

I agree, this does seem to gradually consume more and more RAM.
Could you open a bug on bugzilla to track this please?

> I think the problem might be in the C code. I'd like to get this bug
> sorted out, but I'm not very good in C. Is there anyone around who
> I could check ideas with?

Have you ever used valgrind on a C tool? I'm not sure if it is easy
to use via Python, but it is my tool of choice for checking memory
leaks in C.

Peter


More information about the Biopython-dev mailing list