openpyxl在平衡功能和效能上做來很大努力。毫無疑問,我們更關注功能而不是優化:因為一旦完成api,效能優化也就變得更容易。與其他庫和應用程式相比,記憶體佔用率很高,大約是原始檔案大小的50倍。例如,對於50mb的excel檔案,記憶體將占用2.5gb。由於許多用例只涉及讀取或寫入檔案,加上optimized
模式的應用,這將不是問題。
所有的測試基準都是綜合的,並且非常依賴於硬體,但是仍然可以得出結論。
測試**可以調整為使用更多工作表或者調整字串資料的比例。因為使用的python版本也會顯著影響效能,所以執行指令碼也可以用於在tox環境中測試不同版本的python。
寫入效能與著名的xlsxwriter進行了比較
versions:
python:
3.6.9
openpyxl:
3.0.1
xlsxwriter:
1.2.5
dimensions:
rows =
1000
cols =
50 sheets =
1 proportion text =
0.10
times:
xlsxwriter :
0.59
xlsxwriter (optimised)
:0.54
openpyxl :
0.73
openpyxl (optimised)
:0.61
versions:
python:
3.7.5
openpyxl:
3.0.1
xlsxwriter:
1.2.5
dimensions:
rows =
1000
cols =
50 sheets =
1 proportion text =
0.10
times:
xlsxwriter :
0.65
xlsxwriter (optimised)
:0.53
openpyxl :
0.70
openpyxl (optimised)
:0.63
versions:
python:
3.8.0
openpyxl:
3.0.1
xlsxwriter:
1.2.5
dimensions:
rows =
1000
cols =
50 sheets =
1 proportion text =
0.10
times:
xlsxwriter :
0.54
xlsxwriter (optimised)
:0.50
openpyxl :
1.10
openpyxl (optimised)
:0.57
讀取效能測試使用的以前的bug report,與xlrd庫進行比較。xlrd主要用於字尾為.xls舊的biff檔案格式檔案,對xlsx的支援有限。
基準測試的**執行結果顯示,在處理檔案時選擇正確選項很重要。當禁用外部鏈結時,openpyxl將停止開啟鏈結工作表的快取副本。
兩個庫之間的乙個主要區別是openpyxl的read-only
模式會立刻開啟乙個工作簿,使其適合於多個程序,也顯著地減少了記憶體使用。xlrd不會自動將日期和時間轉換為python日期時間而是對單元格進行注釋,但在客戶端**中這樣做會顯著降低效能。
versions:
python:
3.6.9
xlread:
1.2.0
openpyxl:
3.0.1
openpyxl, read-only
workbook loaded 1.14s
optimizationdata 23.17s
output model 0.00s
>>data>>
0.00s
store days 0
%23.92s
store days 100
%17.35s
total time 65.59s
0 cells in total
versions:
python:
3.7.5
xlread:
1.2.0
openpyxl:
3.0.1
openpyxl, read-only
workbook loaded 0.98s
optimizationdata 21.35s
output model 0.00s
>>data>>
0.00s
store days 0
%20.70s
store days 100
%16.16s
total time 59.19s
0 cells in total
versions:
python:
3.8.0
xlread:
1.2.0
openpyxl:
3.0.1
openpyxl, read-only
workbook loaded 0.90s
optimizationdata 19.58s
output model 0.00s
>>data>>
0.00s
store days 0
%19.35s
store days 100
%15.02s
total time 54.85s
0 cells in total
讀取工作表相當耗費cpu,這限制了並行化帶來的好處。但是,如果您主要是想使用工作簿的內容,那麼可以使用openpyxl的read-only
模式,開啟工作簿的多個例項,同時利用多個cpu。
示例**使用與讀取測試相同的原始檔,由於建立了額外的python程序,效能可以輕鬆地擴充套件並且開銷很小。
parallised read
workbook loaded 1.12s
>>data>>
2.27s
output model 2.30s
store days 100
%37.18s
optimizationdata 44.09s
store days 0
%45.60s
total time 46.76s
django官方文件3 0學習筆記 02
初試api 進入互動式python命令列 設定管理員 時區配置time zone utc use tz truetime zone asia shanghai use tz false資料庫配置 django支援資料庫 postgresql mysql oracle sqlite3 database...
C 3 0 語言定義文件(微軟官方版)正式發布!
2007年08月25日 23 20 00 c 3.0 語言定義文件 微軟官方版 正式發布 如果想精通一門程式語言,你就需要像律師研究法律條款一樣來研究這門語言的定義文件 language specification,簡稱langspec 靜悄悄地,c 3.0語言定義文件在經過眾多社群愛好者的revi...
C 3 0 語言定義文件(微軟官方版)正式發布!
c 3.0 語言定義文件 微軟官方版 正式發布 如果想精通一門程式語言,你就需要像律師研究法律條款一樣來研究這門語言的定義文件 language specification,簡稱langspec 靜悄悄地,c 3.0語言定義文件在經過眾多社群愛好者的review後,於2007 08 20號面世了!作...