[問題] 迭代次數太高,字典問題

看板Python作者 (尸比糸吉尸尾)時間3年前 (2022/05/13 08:59), 編輯推噓6(6016)
留言22則, 10人參與, 最新討論串1/1
題目我就簡單說 我有一個類,名稱叫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

05/13 09:19, 3年前 , 1F
可以用functools.lru_cache不用自己刻
05/13 09:19, 1F

05/13 09:20, 3年前 , 2F
記憶體不夠,也可以物件轉pickle暫存硬碟
05/13 09:20, 2F

05/13 11:09, 3年前 , 3F
或許你根本不需要用字典記住全部結果
05/13 11:09, 3F

05/13 11:09, 3年前 , 4F
重新審視一下那個繁瑣的計算過程,也許可以大幅簡化
05/13 11:09, 4F

05/13 12:48, 3年前 , 5F
試試看field?
05/13 12:48, 5F

05/13 13:37, 3年前 , 6F
Sch大 我了解了
05/13 13:37, 6F

05/13 13:38, 3年前 , 7F
Single大,我去了解一下
05/13 13:38, 7F

05/13 13:52, 3年前 , 8F
lycan大 好,知道了
05/13 13:52, 8F

05/13 14:22, 3年前 , 9F
result 如果只是單一值的話 用 list 或 array,然後
05/13 14:22, 9F

05/13 14:22, 3年前 , 10F
可以先把需要的大小弄出來,不要讓他自己加,最慘的
05/13 14:22, 10F

05/13 14:22, 3年前 , 11F
狀況記憶體的需求可能是原先的兩倍
05/13 14:22, 11F

05/13 14:58, 3年前 , 12F
另外如果不需要中間結果,只存上一次的結果過來用即
05/13 14:58, 12F

05/13 14:58, 3年前 , 13F
05/13 14:58, 13F

05/13 23:33, 3年前 , 14F
考慮用 nympy dtype
05/13 23:33, 14F

05/14 01:31, 3年前 , 15F
看演算法能不能優化
05/14 01:31, 15F

05/16 21:53, , 16F
只留上一次要用的值,太舊用不到的把它放掉
05/16 21:53, 16F

05/17 13:05, , 17F
試試看Cython Linux只要裝好g++ pythondev windows
05/17 13:05, 17F

05/17 13:05, , 18F
比較麻煩要裝VC++ 但是效能應該可以好很多
05/17 13:05, 18F

05/17 13:07, , 19F

05/17 13:07, , 20F
我那時候把Python改成Cython快了10倍以上
05/17 13:07, 20F

05/17 16:30, , 21F
先動演算法再換 interpreter 吧...
05/17 16:30, 21F

05/20 23:43, , 22F
謝謝大家的意見,小弟還在處理中
05/20 23:43, 22F
文章代碼(AID): #1YVQrf3V (Python)
文章代碼(AID): #1YVQrf3V (Python)