我有 python 脚本来过滤 csv 文件中的大量数据。该要求要求考虑在运行时间和内存使用方面的可扩展性。
我写了 2 个脚本,它们都可以很好地过滤数据。关于考虑可扩展性,我决定使用 python 生成器,因为它使用迭代器并且不会在内存中保存太多数据。
当我比较了 2 个脚本的运行时间时,我发现如下:
脚本 1 - 使用生成器 - 花费更多时间 - 0.0155925750732s
def each_sentence(text):
match = re.match(r'[0-9]+', text)
num = int(text[match.start():match.end()])
if sympy.isprime(num) == False:
yield text.strip()
with open("./file_testing.csv") as csvfile:
for line in csvfile:
for text in each_sentence(line):
print(text)
脚本 2 - 使用拆分且不使用生成器 - 花费更少的时间 - 0.00619888305664
with open("./file_testing.csv") as csvfile:
for line in csvfile:
array = line.split(',')
num = int(array[0])
if sympy.isprime(num) == False:
print line.strip()
为了满足要求,我需要使用python生成器吗?或任何建议或建议?