[問題] 如何優化python讀檔速度
*環境:*
Python2.6 + Django1.2.5 + MySql + DotCloud
*前置作業:*
現在有幾千個文件檔
每個文件裡約有200-400筆資料
(文件範例共2個檔案)
1.txt為1筆資料,
內容:
8.44587 6.42955 1.59212 0.225454 4 3 0 0 1 0 0 0 28 82 29 9 1 0 0 0 1 23 42
67 39 0 0 0 0 0 0 2 4 0 0 0 51 21 0 0 2 4 0 2 162 162 28 34 26 2 1 32 29 52
35 162 162 14 1 7 0 0 0 11 43 1 0 0 47 24 9 0 0 0 0 13 162 40 4 4 24 14 16
162 35 4 1 48 162 85 28 80 0 0 0 18 58 5 0 0 2 17 8 0 0 1 3 0 40 13 3 0 1 5
35 71 8 0 0 4 44 55 40 38 0 0 0 3 9 5 0 0
2.txt為2筆資料
內容:
8.44587 6.42955 1.59212 0.225454 4 3 0 0 1 0 0 0 28 82 29 9 1 0 0 0 1 23 42
67 39 0 0 0 0 0 0 2 4 0 0 0 51 21 0 0 2 4 0 2 162 162 28 34 26 2 1 32 29 52
35 162 162 14 1 7 0 0 0 11 43 1 0 0 47 24 9 0 0 0 0 13 162 40 4 4 24 14 16
162 35 4 1 48 162 85 28 80 0 0 0 18 58 5 0 0 2 17 8 0 0 1 3 0 40 13 3 0 1 5
35 71 8 0 0 4 44 55 40 38 0 0 0 3 9 5 0 0
8.44587 6.42955 1.59212 3.26753 7 3 0 0 0 0 0 3 51 62 33 28 7 0 0 4 2 8 35 75
43 8 2 0 0 1 6 1 2 13 9 0 52 7 0 0 0 0 0 11 163 119 24 59 37 5 1 31 27 21 19
163 163 46 5 3 0 0 0 10 47 28 16 0 52 2 0 0 0 0 0 8 163 21 1 6 29 70 42 137
24 3 1 29 163 163 27 24 1 4 0 2 45 24 0 0 7 0 0 0 0 0 0 3 37 0 0 0 2 29 47 61
1 0 0 0 24 88 25 5 1 2 0 0 2 3 0 0
########################################################
*目的:*
把文件裡的每筆資料先用固定格式,
再用record_query_vector包成一個list
(請先不要提psyco和pypy、multithread及mysql的LOAD DATA INFILE,是否能從程式去改)
*問題:*
我目前程式是這樣,主要耗的速度是讀檔的時間,
光是讀幾百個檔( 迴圈次數多 ),就要花將近40秒的時間,
請問該怎麼改?讓速度更快呢?
請指點一下或者麻煩改程式碼,麻煩了,謝謝您。
*變數: *
全部文件檔=all_f=[ ]
try與finally包成的程式是文件資料要轉成的格式
for ts in TData.objects.raw(*'SELECT id,* f_url *FROM ts_to'*):
all_f.append(ts.f_url)
第幾個文件檔的連結=f_url
record_query_vector=[ ]
*
*
*程式:*
for f_url in all_f:
test_dict={ }#字典
file=open(f_url)
next(file)
try:
for line in file:
dk=line.split()[:4]#串列,字典的key
dk=' '.join(dk)#字串
dv=line.split()[4:]#串列,字典的value
dv=' '.join(dv)#串列包字串
dv= [int(n) for n in dv.split(' ')]
test_dict[str(dk)]=dv
count+=1
finally:
file.close()
record_query_vector.append(test_dict.values())
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.165.146
→
01/02 22:32, , 1F
01/02 22:32, 1F
→
01/02 22:32, , 2F
01/02 22:32, 2F
→
01/03 00:01, , 3F
01/03 00:01, 3F
→
01/03 01:22, , 4F
01/03 01:22, 4F
→
01/03 01:23, , 5F
01/03 01:23, 5F
→
01/03 01:23, , 6F
01/03 01:23, 6F
推
01/03 08:18, , 7F
01/03 08:18, 7F
→
01/03 08:19, , 8F
01/03 08:19, 8F
→
01/03 09:49, , 9F
01/03 09:49, 9F
※ 編輯: andy6756 來自: 59.121.160.126 (01/03 09:52)
→
01/07 00:54, , 10F
01/07 00:54, 10F
→
01/07 00:55, , 11F
01/07 00:55, 11F
Python 近期熱門文章
PTT數位生活區 即時熱門文章