Мой код генерирует список числовых массивов размером (1, 1, n, n, m, m), где n может варьироваться от 50-100, а m - от 5-10 в зависимости от рассматриваемого случая.Длина самого списка может достигать 10000 и записывается / выгружается с использованием pickle в конце кода.Для случаев с более высоким значением этих чисел или когда размеры файлов превышают 5-6 ГБ, я получаю ошибку Out of Memory .Ниже приведен пример ситуации:
import numpy as np
list, list_length = [], 1000
n = 100
m = 3
for i in range(0, list_length):
list.append(np.random.random((1, 1, n, n, m, m)))
file_path = 'C:/Users/Desktop/Temp/'
with open(file_path, 'wb') as file:
pickle.dump(list, file)
Я ищу способ, который поможет мне
- разбить данные, чтобы я мог избавиться от ошибки памятии
- воссоединение данных в исходной форме при необходимости позже
Все, что я мог бы подумать, это:
for i in range(0, list_length):
data = np.random.random((1, 1, n, n, m, m))
file_path = 'C:/Users/Desktop/Temp/'+str(i)
with open(file_path, 'wb') as file:
pickle.dump(data, file)
и затем объединить, используя:
combined_list = []
for i in range(0, list_length):
file_path = 'C:/Users/Desktop/Temp/single' + str(i)
with open(file_path, 'rb') as file:
data = pickle.load(file)
combined_list.append(data)
При таком способе размер файла, безусловно, уменьшается из-за нескольких файлов, но это также увеличивает время обработки из-за нескольких операций ввода-вывода файлов.
Существует ли более элегантный и лучший способсделать это?