numpy
やpandas
のオブジェクトを多数生成したりして、多くメモリ消費する高負荷で複雑な計算を実行した際、timeit
で実行した際の実行時間よりも、普通に実行した際の実行時間が長くなるという現象が起きました。調べてみたところ、普通に実行した際にはガーベージコレクションが途中で作動していて遅くなっているということがわかりました。
下記のtimeit
のソースにあるように、ガーベージコレクションを無効にすることで解決しました。また、手動でガーベージコレクトするには、gc
標準モジュールcollect
関数が利用出来ます。