我正在开发一个由于 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) 我可以做,git show <some-commit>:path/to/some/file但是我要替换什么<some-commit>才能获得文件的当前暂存版本?
上下文:我正在编写一个预提交钩子,我想对暂存文件进行检查,而不是诉诸于隐藏未暂存的更改。有没有更好的办法?