は、このシナリオを考えてみましょう:Pythonジェネレータオブジェクトをクローンする方法は?
#!/usr/bin/env python # -*- coding: utf-8 -*- import os walk = os.walk('/home') for root, dirs, files in walk: for pathname in dirs+files: print os.path.join(root, pathname) for root, dirs, files in walk: for pathname in dirs+files: print os.path.join(root, pathname)
私は、この例ではちょっと冗長ですが、我々は複数回同じwalk
のデータを使用する必要があることを考慮すべきであることを知っています。私はベンチマークのシナリオをとっており、同じwalk
データの使用は、有益な結果を得るためには必須です。
私はwalk2 = walk
を試して、2番目の反復でクローンして使用しましたが、機能しませんでした。問題は...私はそれをどのようにコピーできますか?それは今まで可能ですか?
ありがとうございます。
'os.walk( '/ home')'を2回使用すると何が問題になりますか?どのように問題になるのですか? –
@ S.Lottまあ、その種の仕事はそれぞれの実行で非常に異なります。別の問題は、最初の実行後にシステムがおそらく結果をキャッシュするため、次の実行では不正確な結果が得られることです。アイデアは、前に歩いて、それを引数として渡す2つのシナリオを測定することです。 :) –
キャッシングは誤った結果を引き起こしません。 –