相关疑难解决方法(0)

Python结构的内存大小

是否有关于32位和64位平台上Python数据结构的内存大小的参考?

如果没有,这将是很好的在SO上.越详尽越好!那么以下Python结构使用了多少字节(取决于len相关时的内容类型)?

  • int
  • float
  • 参考
  • str
  • unicode字符串
  • tuple
  • list
  • dict
  • set
  • array.array
  • numpy.array
  • deque
  • 新式类对象
  • 旧式的类对象
  • ......以及我忘记的一切!

(对于仅保留对其他对象的引用的容器,我们显然不希望自己计算项目的大小,因为它可能是共享的.)

此外,有没有办法在运行时(递归或不递归)获取对象使用的内存?

python memory memory-footprint

111
推荐指数
5
解决办法
9万
查看次数

深度版本的sys.getsizeof

我想计算一个对象使用的内存.sys.getsizeof很好,但很浅(例如,在列表上调用,它不包括列表元素占用的内存).

我想写一个通用的"深层"版本sys.getsizeof.我理解"深层"的定义有些含糊不清; 我很满意后面copy.deepcopy定义.

这是我的第一次尝试:

def get_deep_sizeof(x, level=0, processed=None):
    if processed is None:
        # we're here only if this function is called by client code, not recursively
        processed = set()
    processed.add(id(x))
    mem = sys.getsizeof(x)
    if isinstance(x, collections.Iterable) and not isinstance(x, str):
        for xx in x:
            if id(xx) in processed:
                continue
            mem += get_deep_sizeof(xx, level+1, processed)
            if isinstance(x, dict):
                mem += get_deep_sizeof(x[xx], level+1, processed)
    return mem
Run Code Online (Sandbox Code Playgroud)

它遇到两个已知问题,以及未知数量未知的问题:

  • 我不知道如何以捕获所有链接对象的方式遍历通用容器.因此,我迭代使用in,并硬编码字典的情况(包括值,而不仅仅是键).显然,这不适用于像字典这样的其他类.
  • 我不得不硬编码排除str(这是一个可迭代的,但没有任何其他对象的链接).如果有更多这样的对象,这将会破坏. …

python memory deep-copy python-3.x

7
推荐指数
1
解决办法
5365
查看次数

Keras 模型训练内存泄漏

我是 Keras、Tensorflow、Python 的新手,我正在尝试构建一个供个人使用/未来学习的模型。我刚开始使用 python,我想出了这段代码(在视频和教程的帮助下)。我的问题是,我对 Python 的内存使用量随着每个 epoch 甚至在构建新模型之后慢慢增加。一旦内存达到 100%,训练就会停止,没有错误/警告。我不太了解,但问题应该在循环内的某个地方(如果我没记错的话)。我知道

k.clear.session()

但问题要么没有被删除,要么我不知道如何将它集成到我的代码中。我有:Python v 3.6.4、Tensorflow 2.0.0rc1(cpu 版本)、Keras 2.3.0

这是我的代码:

import pandas as pd
import os
import time
import tensorflow as tf
import numpy as np
import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, LSTM, BatchNormalization
from tensorflow.keras.callbacks import TensorBoard, ModelCheckpoint

EPOCHS = 25
BATCH_SIZE = 32           

df = pd.read_csv("EntryData.csv", names=['1SH5', '1SHA', '1SA5', '1SAA', '1WH5', '1WHA',
                                         '2SA5', '2SAA', '2SH5', '2SHA', '2WA5', '2WAA',
                                         '3R1', '3R2', '3R3', '3R4', '3R5', '3R6',
                                         'Target'])

df_val …
Run Code Online (Sandbox Code Playgroud)

python memory checkpoint keras tensorflow

6
推荐指数
1
解决办法
6795
查看次数

为什么 Python 列表的内存使用量比预期的要小?

在此处输入图片说明

如图所示。50 000 000条记录只占用404M内存,为什么?由于一条记录占用 83 字节,因此 50 000 000 条记录应占用 3967M 内存。

>>> import sys
>>> a=[]
>>> for it in range(5*10**7):a.append("miJ8ZNFG9iFqiQQohvyTWwqsij2rJCiZ7v"+str(it))
... 
>>> print(sys.getsizeof(a)/1024**2)
404.4306411743164
>>> print(sys.getsizeof("miJ8ZNFG9iFqiQQohvyTWwqsij2rJCiZ7v"))
83
>>> print(83*5*10**7/1024**2)
3957.7484130859375
>>> 
Run Code Online (Sandbox Code Playgroud)

python memory list

5
推荐指数
1
解决办法
131
查看次数