【发布时间】:2020-11-03 17:25:33
【问题描述】:
这段 Python 代码运行的时间越长,速度就越慢。
谁能告诉我为什么?
我希望它不会为我查询的每一行重新索引并从头开始计数,我认为这将是某种文件流?!
从 10k 到 20k 需要 2 秒。从 300k 到 310k 大约需要 5 分钟。并且变得更糟。 代码仅在 ELSE 部分中运行到该点,并且“listoflines”在该点是恒定的(列表中的 850000 行)并且类型为“list []”以及“偏移”只是一个恒定的“int”那一点。
源文件有数百万行,最多超过 2000 万行。
'dummyline not in listoflines' 每次都应该花费相同的时间。
with open(filename, "rt") as source:
for dummyline in source:
if (len(dummyline) > 1) and (dummyline not in listoflines):
# RUN compute
# this part is not reached where I have the problem
else:
if dummyalreadycheckedcounter % 10000 == 0:
print ("%d/%d: %s already checked or not valid " % (dummyalreadycheckedcounter, offset, dummyline) )
dummyalreadycheckedcounter = dummyalreadycheckedcounter +1
【问题讨论】:
-
我猜测记忆中的某些东西可能正在增长,并且细节隐藏在您编辑掉的位中。即使您显示的内容也没有正确缩进,这表明您也已经编辑了“else”块内的行。
-
thx,虽然我看不出上面的缩进有什么问题,但它仍然只是工作代码的复制粘贴..它确实在做它应该做的事情,没有别的..
标签: python list python-textprocessing