Python numpy массив не освобождает память - PullRequest
1 голос
/ 26 января 2020

Я написал тестовый код ниже, который воспроизводит нехватку памяти, которую я получаю в моей программе. Я создаю numpy массивов и создаю из него DataFrame. Но я не сохраняю ни результаты, ни исходные массивы, ни удаляю полученный фрейм данных. Вместо того, чтобы освобождать память, он продолжает складывать память, что в конечном итоге приводит к сбою программы. На возвращенный фрейм данных нет ссылки, поэтому он должен быть удален при g c .collect (), но это не так.

Есть ли способ заставить python освободить выделенную память при создании numpy массива?

import numpy as np
import pandas as pd
import time
import gc

def test(size): 
    arr = np.random.randint(0, 10, size) 
    start = time.perf_counter() 
    df = pd.DataFrame(arr) 
    print("time elapsed {:6.6f}".format(time.perf_counter() - start)) 
    return df 

#create 1 billion integers
test(1000000000)
gc.collect()
test(1000000000)
gc.collect()
test(1000000000)
gc.collect()
...