python读取一个文件的时间随着文件夹中文件的数量而增加
我的python脚本假定执行以下操作: 1) 对文件夹“output”中的文件进行计数,这在大约0.0秒内完成 2) 只读名为n0.dat的第一个文件,并从中创建空列表python读取一个文件的时间随着文件夹中文件的数量而增加,python,performance,Python,Performance,我的python脚本假定执行以下操作: 1) 对文件夹“output”中的文件进行计数,这在大约0.0秒内完成 2) 只读名为n0.dat的第一个文件,并从中创建空列表 import os, csv icoords, jcoords, kcoords = set(),set(),set() rowLen = 10 nMax = len([file for file in os.listdir('output') if file.endswith('.dat')]) print(nMax)
import os, csv
icoords, jcoords, kcoords = set(),set(),set()
rowLen = 10
nMax = len([file for file in os.listdir('output') if file.endswith('.dat')])
print(nMax)
with open('output/n0.dat', newline='') as csvfile:
print ('opened')
myReader = csv.reader(csvfile, delimiter=' ')
for row in myReader:
if len(row) == rowLen:
icoords.add(int(row[0]))
jcoords.add(int(row[1]))
kcoords.add(int(row[2]))
iMin, jMin, kMin, iMax, jMax, kMax = min(icoords), min(jcoords), min(kcoords), max(icoords)+1, max(jcoords)+1, max(kcoords)+1
cV = [[[[[] for n in range(nMax)] for k in range(kMax)] for j in range(jMax)] for i in range(iMax)]
问题是:如果文件夹中只有一个文件,则只需2秒钟即可完成程序;如果我有20个文件,它需要15秒,如果我有60个文件,我得到内存错误
为什么??python是否在计算机内存中的某个位置存储所有已计数的文件
顺便说一句,每个文件的大小为4.51MB,在不同的运行中没有更改
提前感谢您的帮助:)
nMax
是文件数,在最后一行中,您正在迭代nMax
。因此,是的,我希望内存消耗和运行时间会增长。啊,当然:(谢谢!时间似乎只会随着nMax
的增加而增加,无论我是计算文件数来获取它还是设置nMax
手册,你计算nMax的方法都会创建一个列表并找到它的长度。一种更节省内存的方法是在迭代时为每个项目增加一个数字,这样你就可以不需要全部记住。使用括号而不是括号使其成为一个可编辑的列表,这意味着每个值都是根据需要计算的。代码如下:nMax=sum(如果file.endswith('.dat'),则为os.listdir('output')中的文件为1)