缘由:在写多进程的时候,进程之间要用到共享变量,Manager,于是发现了一种新的数据类型:
multiprocessing.managers.DictProxy
简单来说,这种数据类型特点是,只读模式,内存占用的更少,平均减少了四分之一,最高测试可以减少到1/20,配合pickle.dumps来使用,那么存到本地的文件原本可能是20GB,目前可能只需要1GB,读写速度,性能和空间上都是更优解,算是意外收获
chatgpt的例子:(网址:https://tpyrcne.buzz/)
import sys
from types import MappingProxyType
# 创建一个普通的字典
normal_dict = {1: 'a', 2: 'b', 3: 'c'}
# 使用MappingProxyType创建一个字典代理
proxy_dict = MappingProxyType(normal_dict)
# 检查两者的内存大小
size_normal_dict = sys.getsizeof(normal_dict)
size_proxy_dict = sys.getsizeof(proxy_dict)
print(f"普通字典的内存大小:{size_normal_dict} 字节") #240
print(f"字典代理的内存大小:{size_proxy_dict} 字节") #48