我有一个大约550MB的pickle文件,其中包含一个带有一些子区域的巨大字典,浮动列表和整数;加载后,所需的RAM大约为2.5GB。
浮点数列表所需的精度最多为10位,因此Numpy float16就足够了。当我将列表从原生Python 64bit Floats转换为Float16时,我保存了大量的RAM - 但不幸的是我想将我的工具作为exe分发,因此使用PyInstaller捆绑它 - >但捆绑numpy使得.exe很大,大小约为130MB。我不需要Numpy的任何其他内容,只想使用numpy数据类型存储Ints和float的所有列表,因此使用np.asarray()。
关于如何绕过它的任何想法?
我在想是否有一个小模块,它实现了我可以使用的numpy之类的简化数据类型,如Float16,我希望捆绑这个模块只需要少量的RAM
你知道这样的事吗?
提前致谢!
答案 0 :(得分:1)
好吧,如果那些真的是你需要的numpy中唯一的两件事,那么:
from numpy import float16 as NPfloat16
from numpy import asarray as NPasarray
test = [0.12345, 0.98765]
np_test = NPasarray(test, dtype=NPfloat16)
np_test
输出=
array([ 0.12347412, 0.98779297], dtype=float16)
这会减少你的exe的大小吗?