Как python управляет объектом в памяти - PullRequest
0 голосов
/ 22 марта 2020

Мне просто интересно, как python элементы объекта сохраняются в памяти. Кажется, что python объекты занимают намного меньше места в памяти, чем они должны. Рассмотрим следующий код:

import torch
import torchvision
import torchvision.transforms as transforms

transform = transforms.Compose(
    [transforms.ToTensor(),
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                        download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
                                          shuffle=True, num_workers=2)

testset = torchvision.datasets.CIFAR10(root='./data', train=False,
                                       download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=4,
                                         shuffle=False, num_workers=2)

Данные Cifar 10 занимают 177 МБ на моем жестком диске. Однако размер trainset, trainloader, testset, и testloader кажется очень маленьким (примерно 1 МБ). Как это происходит? Я проверил исходный код torchvision.datasets.CIFAR10 . Кажется, python загружает целые данные в память при создании объекта trainset или trainset. Я также подозреваю, что следующая техника, вероятно, не является хорошим методом для получения точного размера объекта. В таком случае, Как мне измерить фактический размер объекта?

from pympler import asizeof # need to install pympler package
asizeof.asizeof(trainset) + asizeof.asizeof(trainloader) + asizeof.asizeof(testset)+asizeof.asizeof(testloader)
>>>1097968
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...