小编par*_*hed的帖子

为什么带槽的 pickle 对象比不带槽的 pickle 对象大?

我正在开发一个由于 OOM 杀手而一直死掉的程序。我希望在不进行重大重构的情况下快速减少内存使用量。我尝试添加__slots__到最常见的类中,但我注意到腌制的大小增加了。这是为什么?

class Class:
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c


class ClassSlots:
    __slots__ = ["a", "b", "c"]

    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

cases = [
    Class(1, 2, 3),
    ClassSlots(1, 2, 3),
    [Class(1, 2, 3) for _ in range(1000)],
    [ClassSlots(1, 2, 3) for _ in range(1000)]
]

for case in cases:
    dump = pickle.dumps(case, protocol=5)
    print(len(dump))
Run Code Online (Sandbox Code Playgroud)

使用 Python 3.10 打印

59 …
Run Code Online (Sandbox Code Playgroud)

python pickle

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

如何 git 显示暂存文件?

我可以做,git show <some-commit>:path/to/some/file但是我要替换什么<some-commit>才能获得文件的当前暂存版本?

上下文:我正在编写一个预提交钩子,我想对暂存文件进行检查,而不是诉诸于隐藏未暂存的更改。有没有更好的办法?

git git-show git-stage

3
推荐指数
1
解决办法
194
查看次数

标签 统计

git ×1

git-show ×1

git-stage ×1

pickle ×1

python ×1