电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

解決python執(zhí)行較大excel文件openpyxl慢問題

瀏覽:100日期:2022-07-25 14:22:29

我就廢話不多說了,大家還是直接看代碼吧!

talk is cheap

from openpyxl import Workbook from openpyxl.utils import get_column_letter from openpyxl import load_workbook import time wb = load_workbook('E:/a.xlsx', read_only=True) sh = wb['Sheet'] # rowItem = {} # for j in range(1,2000): # for i in range(1, 30): # rowItem[get_column_letter(i)] = i # sh.append(rowItem) # wb.save('E:/a.xlsx') t0 = time.time() print(sh[’V500’].value) t1 = time.time() print('openpyxl所用時間:', str(t1-t0)) import xlrd xlsPath = 'E:/a.xlsx' WorkBook = xlrd.open_workbook(xlsPath) sh = WorkBook.sheet_by_name('Sheet') t0 = time.time() print(sh.cell(499,22).value) t1 = time.time() print('xlrd所用時間:', str(t1-t0))

測試結(jié)果:

22openpyxl所用時間: 0.4421761035919189523.0xlrd所用時間: 0.0010063648223876953

結(jié)論

openpyxl的慢是讀取慢,可以選擇xlrd代替,詳細(xì)測試下面繼續(xù)

不直接使用xlwt+xlrd是因為xlwt僅支持2003及以下版本,最大行數(shù)限制在65536,不夠用,而openpyxl大概在一百多萬

主要的說完了,下面詳細(xì)說了:在寫工具的時候遇到的這個問題,開始是用的xlwt+xlrd,然后行數(shù)超標(biāo)了,沒辦法換成openpyxl使用excel2007的版本,原本測試不到三萬行的數(shù)據(jù),只要三四秒,換成openpyxl以后,花了好幾分鐘,具體沒看多少了,然后加上函數(shù)運行時間的監(jiān)視器以后,才看到是讀取的時候出的問題

推測原因:

推測的話,openpyxl的根據(jù)行號列號讀取的時候,是從第一行第一列開始遍歷,直到行號等于指定行號,列號等于指定列號,所以要讀取的行號列號越多就越慢,(也可能是從第一個有數(shù)據(jù)的行或列),而xlrd則是類似與數(shù)組一樣,我們要取第幾個元素,直接根據(jù)下標(biāo)找到內(nèi)存中對應(yīng)地址的元素即可,所以無論excel總量多少,速度基本都是不變的

留下的坑

xlwt寫入僅支持65536行,那xlrd的讀取很可能也是,也就是超過這么多的數(shù)據(jù)可能也會出錯

我這里因為是讀多表數(shù)據(jù)生成單表數(shù)據(jù),生成方式大概是Na*Nb這樣,所以實際讀取的不會太多,但生成的很多,所以基本可以用考慮這個問題

另外,據(jù)說xlrd讀取xlsx格式的偶爾會出現(xiàn)問題,具體沒測試,暫時用還沒毛病

最后,順帶上一下監(jiān)控函數(shù)運行時間的裝飾器吧:

import timefrom functools import wrapsdef fn_timer(function): @wraps(function) def function_timer(*args, **kwargs): t0 = time.time() result = function(*args, **kwargs) t1 = time.time() print ('Total time running %s: %s seconds' % (function.__name__, str(t1-t0)) ) return result return function_timer

使用方式的話,就是在要監(jiān)控的函數(shù)定義上面加上 @fn_timer 就行了

以上這篇解決python執(zhí)行較大excel文件openpyxl慢問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: python
相關(guān)文章:
主站蜘蛛池模板: BAUER减速机|ROSSI-MERSEN熔断器-APTECH调压阀-上海爱泽工业设备有限公司 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | GEDORE扭力螺丝刀-GORDON防静电刷-CHEMTRONICS吸锡线-上海卓君电子有限公司 | 石英陶瓷,石英坩埚,二氧化硅陶瓷-淄博百特高新材料有限公司 | 酵素生产厂家_酵素OEM_酵素加盟_酵素ODM_酵素原料厂家_厦门益力康 | 洁净实验室工程-成都手术室净化-无尘车间装修-四川华锐净化公司-洁净室专业厂家 | 吲哚菁绿衍生物-酶底物法大肠菌群检测试剂-北京和信同通科技发展有限公司 | 齿轮减速马达一体式_蜗轮蜗杆减速机配电机-德国BOSERL齿轮减速电动机生产厂家 | 厌氧反应器,IC厌氧反应器,厌氧三相分离器-山东创博环保科技有限公司 | 高低温老化试验机-步入式/低温恒温恒湿试验机-百科 | app开发|app开发公司|小程序开发|物联网开发||北京网站制作|--前潮网络 | 冷油器-冷油器换管改造-连云港灵动列管式冷油器生产厂家 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 佛山市德信昌电子有限公司| 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | 西安微信朋友圈广告投放_微信朋友圈推广_西安度娘网络科技有限公司 | 河南包装袋厂家_河南真空袋批发价格_河南服装袋定制-恒源达包装制品 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 丝印油墨_水性油墨_环保油墨油漆厂家_37国际化工 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 冻干机(冷冻干燥机)_小型|实验型|食品真空冷冻干燥机-松源 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 中央空调温控器_风机盘管温控器_智能_液晶_三速开关面板-中央空调温控器厂家 | 灌装封尾机_胶水灌装机_软管灌装封尾机_无锡和博自动化机械制造有限公司 | 黄石妇科医院_黄石东方女子医院_黄石东方妇产医院怎么样 | 篮球地板厂家_舞台木地板品牌_体育运动地板厂家_凯洁地板 | 涂层测厚仪_漆膜仪_光学透过率仪_十大创新厂家-果欧电子科技公司 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 今日扫码_溯源二维码_产品防伪一物一码_红包墙营销方案 | 伊卡洛斯软装首页-电动窗帘,别墅窗帘,定制窗帘,江浙沪1000+别墅窗帘案例 | 大型冰雕-景区冰雕展制作公司,3D创意设计源头厂家-[赛北冰雕] | 高温链条油|高温润滑脂|轴承润滑脂|机器人保养用油|干膜润滑剂-东莞卓越化学 | 冷却塔改造厂家_不锈钢冷却塔_玻璃钢冷却塔改造维修-广东特菱节能空调设备有限公司 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 扬尘在线监测系统_工地噪声扬尘检测仪_扬尘监测系统_贝塔射线扬尘监测设备「风途物联网科技」 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 |