csv ファイル内の大量のデータをフィルタリングするための Python スクリプトがあります。この要件では、実行時間とメモリ使用量に関するスケーラビリティを考慮する必要があります。
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 ジェネレーターを使用する必要がありますか? または提案や推奨事項はありますか?