2

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 ジェネレーターを使用する必要がありますか? または提案や推奨事項はありますか?

4

2 に答える 2