大きなパンダデータフレームをメモリにロードしています。システムが他のプロセスにCPUを与えていること約16分があります関数で使用される時間をデバッグするにはどうすればよいですか?
%%time
df = pd.read_csv(data_file)
CPU times: user 3min 53s, sys: 57.5 s, total: 4min 50s
Wall time: 21min 2s
:私は%%time
魔法で必要な時間を測定することができます。私のプロセスは時間の100%(Difference between CPU time and wall time)を取らないことを知っています。しかし、これは私だけが使用する仮想マシンなので、16分のほとんどはデータ読み込みタスクに関連するプロセスに関連していると思います。
htop
で使用されているリソースを目で確認すると、ほとんどのコアがアイドル状態になり、システムはスワップメモリの容量をゆっくりと増加させます。私は、スワップのI/O操作がほとんどの時間を費やしていると思うが、私はそれを確認したい。
私は読書プロセスを改善するために何かできるかどうかを見たいと思っていますが、read_csv
の中で過ごした時間を調べる方法はわかりません。
編集:オリの答えのおかげで、私はほとんどの時間は、パンダのinternals.py _stack_arrays()
メソッドとオブジェクトpandas.parser.TextReader
のread
コールに費やされたことが把握できました。パンダが列の種類を把握していましたか?私は辞書を型で提供しようとしましたが、読み込み時間は3分に短縮されました。