作者timTan (用口头禅区分年记)
看板Python
标题Re: [问题] 存Data的方法
时间Sun Jul 31 00:53:28 2011
※ 引述《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)
1F:推 Andy58974:非常感谢你唷~~~ 08/01 01:29
2F:→ timTan:so does it work? 08/01 15:43
3F:推 Andy58974:有变快一点~但是在GAE上用起来还是相当耗CPU time 08/02 02:07