Re: [問題] 存Data的方法

看板Python作者 (用口頭禪區分年記)時間14年前 (2011/07/31 00:53), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《Andy58974 (奧蘭多布魯)》之銘言: : 各位大大好 : 我有很多個文件要用python存進去 : 第一個文件的內容是: : A C D F(這是第一行,以空白做分隔) : W Q R Z(這是第二行,以空白做分隔) : M J K N(這是第三行,以空白做分隔) : ... : ... : ... : 總共有500行 : 下一個文件的內容是: : A O P F(這是第一行,以空白做分隔) : W L S Z(這是第二行,以空白做分隔) : M G H N(這是第三行,以空白做分額) : 每個文件內容 : 以行做比對,只有第二項和第三項會變 : 我原本的作法是: : 每一行在存的時候都給不同的編號以方便查詢 : 每一行用同一個class包起來(一個一個assign --> 編號=1,a=A,b=C,c=D,d=F 這樣的方法) : 跑無限回圈讓他跑完 : 後來發現花費時間非常長... : 總共有三個程式: : main:表現index--http://codepad.org/Fs6zrLan : model:存Data用的class--http://codepad.org/7veEgm9c : upgrade:在google appengine 存Data的程式--http://codepad.org/VIhVyKtO : 請問要如何存這些資料才能最節省時間??? : 希望能為小弟解惑 : 感謝各位大大 有用過 time or 一些 profile 的 tool 嗎 演算法沒有太大的改進的空間了。 一些細節的修改希望有幫助。 話說都集中 upgrade 這個file 應該沒錯吧? 1. while i < len(tmp): if tmp[i]=="^M": del tmp[i] i=i+1 這個 loop不必要,你是要把newline移掉嗎? 有點浪費。 在前一行做 line2 = lin2.strip() 應該就可以了。 這樣可以少做這個loop。 2. counter.value 可能不用一直更新。 3. for line in lines: 在你的Logic 來說,改成如下的寫法應該就好了。 lines = f.readlines() # 要拿掉。 然後 for line in f: 可以省掉常數的時間複雜度。 也可以不用浪費 lines的空間。 -- 希望有用啦 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.8.191 ※ 編輯: timTan 來自: 61.62.8.191 (07/31 01:07)

08/01 01:29, , 1F
非常感謝你唷~~~
08/01 01:29, 1F

08/01 15:43, , 2F
so does it work?
08/01 15:43, 2F

08/02 02:07, , 3F
有變快一點~但是在GAE上用起來還是相當耗CPU time
08/02 02:07, 3F
文章代碼(AID): #1ED3SAUv (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1ED3SAUv (Python)