2017-05-10 6 views
2

パンダのDataFrameで作業しているのに気付いたのは、一番奇妙なことです。同じコードの1回目と2回目の実行の間にDataFrameを作成する時間が大幅に短縮されます。pythonやPandasのキャッシュ結果はありましたか?

L = list('ABCDEFGH')*20000 
min_length = 10000 
data_dict = {k: np.random.randint(10, size=min_length) for k in L} 
start = time.time() 
df = pd.DataFrame({k:v[:min_length] for k,v in data_dict.items()}) 
print('loop time : ', time.time() - start) 

第一の実行のための時間

loop time : 0.05926999 

私はすべてのボディは、ちょうど何が起こったのか説明でき

loop time : 0.00090622 

上記のコードを再実行するとき?
pandasまたはpythonキャッシュの結果はありましたか?
ipythonでtimeitを実行すると、this

+0

プログラムはファイルに保存されていますか? – JohanL

+0

はい!何か違いはありますか? –

+0

私はあなたもこれをiPythonでタグ付けするべきだと思います。興味深いのは、私が実際に 'timeit'でそのメッセージを見たことがないので、どの部分がキャッシュされているのかわからないからです(どのようにトレースするのか分かりません)。しかし、私はあなたの結果を再現できます。 – roganjosh

答えて

0

のような結果が得られます。実行時に.pycファイルに変換する時間をとって最初に実行したときの問題である可能性がありました。私は本当に専門家ではありませんが、これは本当の答えではなく、トラブルシューティングの段階です。

これを実行して、最初の反復が後続の反復よりもかなり長いかどうかを確認してください。

L = list('ABCDEFGH')*20000 
min_length = 10000 
data_dict = {k: np.random.randint(10, size=min_length) for k in L} 

for i in range(10): 
    start = time.time() 
    df = pd.DataFrame({k:v[:min_length] for k,v in data_dict.items()}) 
    print('loop time : ', time.time() - start) 
+0

私はちょうど上記のコードを実行します。 0.03665304183959961 ループ時間:0.0012547969818115234 ループ時間:0.0006182193756103516 ここで私の出力 'ループ時間があります。 ループ時間:0.0004937648773193359 ループ時間:0.0005068778991699219 ループ時間:0.0005292892456054688 –

+0

時間が改善され、一定の値に飽和します。 –

+0

私は助けることができましたが、その背後にある理由は、私の給与グレード以上です!あなたの検索で幸運。 – pshep123

関連する問題