我知道下面给出的代码不会被完全理解,除非我解释我的整个前一行和下一行代码。 但这是代码的一部分,这会导致我的项目出现如此多的延迟,并希望对其进行优化。 我想知道哪个代码部分有问题,怎么可以替换它。 我想,很少有人可以说这个功能的使用比较繁重,而其他方法可以用来做这项工作
请帮忙,
提前致谢
for i in range(len(lists)):
save=database_index[lists[i]]
#print save
#if save[1]!='text0194'and save[1]!='text0526':
using_data[save[0]]=save
p=os.path.join("c:/begpython/wavnk/",str(str(str(save[1]).replace('phone','text'))+'.pm'))
x1=open(p , 'r')
x2=open(p ,'r')
for i in range(6):
x1.readline()
x2.readline()
gen = (float(line.partition(' ')[0]) for line in x1)
r= min(enumerate(gen), key=lambda x: abs(x[1] - float(save[4])))
#print r[0]
a1=linecache.getline(str(str(p).replace('.pm','.mcep')), (r[0]+1))
#print a1
p1=str(str(a1).rstrip('\n')).split(' ')
#print p1
join_cost_index_end[save[0]]=p1
#print join_cost_index_end
gen = (float(line.partition(' ')[0]) for line in x2)
r= min(enumerate(gen), key=lambda x: abs(x[1] - float(save[3])))
#print r[0]
a2=linecache.getline(str(str(p).replace('.pm','.mcep')), (r[0]+1))
#print a2
p2=str(str(a2).rstrip('\n')).split(' ')
#print p2
join_cost_index_strt[save[0]]=p2
#print join_cost_index_strt
j=j+1
#print j
#print join_cost_index_end
#print join_cost_index_strt
enter code here
这里我的database_index有大约2,50,000个条目
答案 0 :(得分:2)
def get_list(file, cmp, fout):
ind, _ = min(enumerate(file), key=lambda x: abs(x[1] - cmp))
return fout[ind].rstrip('\n').split(' ')
root = r'c:\begpython\wavnk'
header = 6
for lst in lists:
save = database_index[lst]
index, base, _, abs2, abs1, *_ = save
using_data[index] = save
base = os.path.join(root, base.replace('phone', 'text'))
fin, fout = base + '.pm', base + '.mcep'
file = open(fin)
fout = open(fout).readlines()
[next(file) for _ in range(header)]
file = [float(line.partition(' ')[0]) for line in file]
join_cost_index_end[index] = get_list(file, float(abs1), fout)
join_cost_index_strt[index] = get_list(file, float(abs2), fout)
不要:
range(len(sequence))
答案 1 :(得分:1)
x1=open(p , 'r')
x2=open(p ,'r')
为什么要两次打开同一个文件?你期待它改变吗?