作者qaz28787493 (尸比糸吉尸尾)
看板Python
标题[问题] 迭代次数太高,字典问题
时间Fri May 13 08:59:19 2022
题目我就简单说
我有一个类,名称叫dot
class dot(object) :
def __init__(self) :
self. Attr1={}
Example=dot()
while(k<=10000):
result=繁琐的计算过程,需要用到上一次的Attr1的值
Example. Attr1[k] =result
k=k+1
请问我该怎麽让我这方式的内存压力小一点,我的电脑内存是16的
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.217.118.25 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1652403561.A.0DF.html
1F:推 lycantrope: 可以用functools.lru_cache不用自己刻 05/13 09:19
2F:→ lycantrope: 记忆体不够,也可以物件转pickle暂存硬碟 05/13 09:20
3F:推 Schottky: 或许你根本不需要用字典记住全部结果 05/13 11:09
4F:→ Schottky: 重新审视一下那个繁琐的计算过程,也许可以大幅简化 05/13 11:09
5F:推 single4565: 试试看field? 05/13 12:48
6F:→ qaz28787493: Sch大 我了解了 05/13 13:37
7F:→ qaz28787493: Single大,我去了解一下 05/13 13:38
8F:→ qaz28787493: lycan大 好,知道了 05/13 13:52
9F:→ mikemike1021: result 如果只是单一值的话 用 list 或 array,然後 05/13 14:22
10F:→ mikemike1021: 可以先把需要的大小弄出来,不要让他自己加,最惨的 05/13 14:22
11F:→ mikemike1021: 状况记忆体的需求可能是原先的两倍 05/13 14:22
12F:→ mikemike1021: 另外如果不需要中间结果,只存上一次的结果过来用即 05/13 14:58
13F:→ mikemike1021: 可 05/13 14:58
14F:→ polom: 考虑用 nympy dtype 05/13 23:33
15F:推 ssivart: 看演算法能不能优化 05/14 01:31
16F:→ wray: 只留上一次要用的值,太旧用不到的把它放掉 05/16 21:53
17F:推 celestialgod: 试试看Cython Linux只要装好g++ pythondev windows 05/17 13:05
18F:→ celestialgod: 比较麻烦要装VC++ 但是效能应该可以好很多 05/17 13:05
20F:→ celestialgod: 我那时候把Python改成Cython快了10倍以上 05/17 13:07
21F:推 Sunal: 先动演算法再换 interpreter 吧... 05/17 16:30
22F:→ qaz28787493: 谢谢大家的意见,小弟还在处理中 05/20 23:43