讓程式飛起來系列 Python如何處理超大gz檔案

2021-10-05 07:29:18 字數 1077 閱讀 6071

線上執行日誌統計任務,別說不應該,也別說不能。事兒就這麼發生了,需要這麼幹!

def

read_gz_log_buildin

(filename):if

not os.path.exists(filename)

:raise exception(

"no such file %s"

% filename)

import gzip

with gzip.

open

(filename,

'rb'

)as f:

for line in f:

line = line[:-

1]print

(line)

f.close(

)

一句話:尼瑪!3個g檔案python2.7用了10分鐘,都影響業務了。乾脆點:退出

$gunzip -c 1.gz 將乙個gz檔案內容輸出到stdout
def

read_gz_log_popen

(filename):if

not os.path.exists(filename)

:raise exception(

"no such file %s"

% filename)

rf = os.popen(

"gunzip -c %s"

% filename)

for line in rf:

line = line[:-

1]# trim \n

# print(line) # do something

cmd_ret = rf.close(

)if cmd_ret is

none

:print

("success"

)else

:print

("error code is %d"

% cmd_ret)

任意 python 版本 1g gz日誌檔案 <10s。

搞定!

讓SQL飛起來

讓sql飛起來 人們在使用sql時往往會陷入乙個誤區,即太關注於所得的結果是否正確,而忽略了不同的實現方法之間可能存在的效能差異,這種效能差異在大型的或是複雜的資料庫環境中 如聯機事務處理oltp或決策支援系統dss 中表現得尤為明顯。筆者在工作實踐中發現,不良的sql往往來自於不恰當的索引設計 不...

讓你的程式飛起來

本方法可以讓c語言指令進一步接近彙編指令的執行效率,提高微控制器 嵌入式系統的速度和穩定性,但程式設計時應採取函式化的程式設計法 例如使用swap 函式時,必要時加注釋。0.位運算心法 1.如果乘上乙個2的倍數數值,可以改用左移運算 left shift 加速 300 x x 2 x x 64 改為...

讓程式飛起來系列 mysql 索引基本用法

本文不討論全文索引,出現類似需求直接換 elasticsearch 簡單了解b 樹,太難不多講,也講不明白 關於b 樹的文章 介面上生產,效能不達標有很多因素導致,最容易被當嫌疑犯的就是資料庫。因為用法不過關,導致了資料庫背鍋。甚至有同學了為了讓介面達標,還沒沒怎麼優化資料庫就過早的開始加入redi...