How can I explicitly free memory in Python?

memory, memory-management, python

Solution

According to Python Official Documentation, you can explicitly invoke the Garbage Collector to release unreferenced memory with `gc.collect()`. Example:

import gc

gc.collect()

You should do that after marking what you want to discard using `del`:

del my_array
del my_object
gc.collect()

Problem

I wrote a Python program that acts on a large input file to create a few million objects representing triangles. The algorithm is: - read an input file - process the file and create a list of triangles, represented by their vertices - output the vertices in the OFF format: a list of vertices followed by a list of triangles. The triangles are represented by indices into the list of vertices The requirement of OFF that I print out the complete list of vertices before I print out the triangles means that I have to hold the list of triangles in memory before I write the output to file. In the meanwhile I'm getting memory errors because of the sizes of the lists. What is the best way to tell Python that I no longer need some of the data, and it can be freed?

Original source

Related problems