看板 Python 關於我們 聯絡資訊
題目我就簡單說 我有一個類,名稱叫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://www.ptt.cc/bbs/Python/M.1652403561.A.0DF.html
lycantrope: 可以用functools.lru_cache不用自己刻 05/13 09:19
lycantrope: 記憶體不夠,也可以物件轉pickle暫存硬碟 05/13 09:20
Schottky: 或許你根本不需要用字典記住全部結果 05/13 11:09
Schottky: 重新審視一下那個繁瑣的計算過程,也許可以大幅簡化 05/13 11:09
single4565: 試試看field? 05/13 12:48
qaz28787493: Sch大 我了解了 05/13 13:37
qaz28787493: Single大,我去了解一下 05/13 13:38
qaz28787493: lycan大 好,知道了 05/13 13:52
mikemike1021: result 如果只是單一值的話 用 list 或 array,然後 05/13 14:22
mikemike1021: 可以先把需要的大小弄出來,不要讓他自己加,最慘的 05/13 14:22
mikemike1021: 狀況記憶體的需求可能是原先的兩倍 05/13 14:22
mikemike1021: 另外如果不需要中間結果,只存上一次的結果過來用即 05/13 14:58
mikemike1021: 可 05/13 14:58
polom: 考慮用 nympy dtype 05/13 23:33
ssivart: 看演算法能不能優化 05/14 01:31
wray: 只留上一次要用的值,太舊用不到的把它放掉 05/16 21:53
celestialgod: 試試看Cython Linux只要裝好g++ pythondev windows 05/17 13:05
celestialgod: 比較麻煩要裝VC++ 但是效能應該可以好很多 05/17 13:05
celestialgod: https://tinyurl.com/yusbeekf 05/17 13:07
celestialgod: 我那時候把Python改成Cython快了10倍以上 05/17 13:07
Sunal: 先動演算法再換 interpreter 吧... 05/17 16:30
qaz28787493: 謝謝大家的意見,小弟還在處理中 05/20 23:43