看板 Python 關於我們 聯絡資訊
※ 引述《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)
Andy58974:非常感謝你唷~~~ 08/01 01:29
timTan:so does it work? 08/01 15:43
Andy58974:有變快一點~但是在GAE上用起來還是相當耗CPU time 08/02 02:07