我编写了一个代码,该代码应该对一个文件的语句和两个列表的元素进行一些操作keywords
和keywords2
。详情如下—
import os
keywords=['a','b']
keywords2=['c','d mvb']
def foo(sentence,k2):
gs_list=[] #####
for k in keywords: #####
if k in sentence: #####
gs_list.append(k) #####
for k in gs_list:
if (k in sentence) and (k2 in sentence):
print 'a match'
return 4
for path, dirs, files in os.walk(r'F:\M.Tech\for assigning cl\selected\random 100'):
for file in files:
sentences=open(file).readlines();
for sentence in sentences:
if sentence.startswith('!series_title'):
for k2 in keywords2:
foo(sentence,k2)
我已经标记了有问题的代码部分。这篇文章(我们称之为BETA)基本上形成了一个关键字列表,这些关键字在所选句子中。因此,将来的操作只能使用这些关键字来执行
这段代码大约需要47 seconds
才能运行100个文件。现在我在想办法加快速度。在keywords2
中约有50个元素。所以我想我基本上运行了50次BETA,把它放在函数func
中,而我只需要列表keywords
和sentence
。我的主代码中已经有了这两个部分,所以我把这部分转移到了主代码中-
import os
keywords=['a','b']
keywords2=['c','d mvb']
def foo(sentence,k2):
for k in gs_list:
if (k in sentence) and (k2 in sentence):
print 'a match'
return 4
for path, dirs, files in os.walk(r'F:\M.Tech\for assigning cl\selected\random 100'):
for file in files:
sentences=open(file).readlines();
for sentence in sentences:
if sentence.startswith('!series_title'):
gs_list=[] #####
for k in keywords: #####
if k in sentence: #####
gs_list.append(k) #####
for k2 in keywords2:
foo(sentence,k2)
我的想法是,这将确保这个列表形成过程只发生一次,每句话,而不是50次像以前一样。这肯定会提高代码的速度。但是这段代码实际上花了89 seconds
来处理同样的100个文件
我不明白为什么这要比前面的代码花费更多的时间。有什么想法吗
目前没有回答
相关问题 更多 >
编程相关推荐