我正在開發一個記錄器守護進程來抓取mongodb數據庫上的日誌魷魚。但我正在經歷太多的CPU利用率。我如何優化這段代碼?如何優化此代碼?
from sys import stdin
from pymongo import Connection
connection = Connection()
db = connection.squid
logs = db.logs
buffer = []
a = 'timestamp'
b = 'resp_time'
c = 'src_ip'
d = 'cache_status'
e = 'reply_size'
f = 'req_method'
g = 'req_url'
h = 'username'
i = 'dst_ip'
j = 'mime_type'
L = 'L'
while True:
l = stdin.readline()
if l[0] == L:
l = l[1:].split()
buffer.append({
a: float(l[0]),
b: int(l[1]),
c: l[2],
d: l[3],
e: int(l[4]),
f: l[5],
g: l[6],
h: l[7],
i: l[8],
j: l[9]
}
)
if len(buffer) == 1000:
logs.insert(buffer)
buffer = []
if not l:
break
connection.disconnect()
當你用分析器運行它,你看到了什麼? – 2010-03-19 21:39:33
確保你沒有安裝沒有C擴展名(--no_ext)的pymongo,它會產生巨大的差異。 – 2010-03-19 21:45:43