2017-03-07 9 views
3

最近私はつまずいたhttp://dask.pydata.org/en/latest/ 私は単一のコアでしか動かないパンダコードを持っているので、他のCPUコアをどう使うのだろうかと思います。 すべての(ローカル)CPUコアを使用するのに効果がありますか?はいの場合、どのようにパンダとの互換性ですか?pandasからdaskに移動してすべてのローカルCPUコアを利用する

パンダで複数のCPUを使用できますか?これまでのところ私はGILのリリースについて読んだが、すべて複雑であるようだ。

答えて

3

すべての(ローカル)CPUコアを使用するとうまくいくでしょうか?

はい。

パンダとの相性は?

かなり互換性があります。 100%ではありません。あなたはPandasとNumPyを混ぜることができ、必要に応じて純粋なPythonのものをDaskで混在させることもできます。

パンダで複数のCPUを使用できますか?

できます。最も簡単な方法は、multiprocessingを使用し、データを別々に保つことです。効率的に行うことができる場合は、各ジョブをディスクから独立して読み込み、ディスクに書き込むことができます。あなたがプロの管理者とマルチコンピュータ環境を持っている場合には、最も難しい方法はmpi4pyです。

+0

多くのCPUコアを持つ単一の(ローカル)ワーカーが関与している限り、どのようなオプションを提案しますか? –

+0

たとえば、1つの列の日付時刻の解析によって、daskでこれを並列化することは可能でしょうか? –

+0

コードを表示できましたか? –

2

Daskは、そのデータフレームにパンダAPIのlarge fractionを実装しています。これらの操作は、全体的なデータフレームのチャンクで非常に同じpandas関数を呼び出すため、完全に互換性があることを期待する必要があります。

結果の計算は、利用可能な任意のschedulersで実行できます。これにより、オーバーヘッドの低いスレッドを実行するか、より複雑なものを実行するかを選択できます。分散スケジューラは、スレッドとプロセス間の分割を完全に制御し、より多くの機能を備え、後でクラスタ全体にスケールアウトすることができます。

多くのパンダの操作はGILをリリースするので、スレッドで効率的に動作します。また、多くのパンダの操作は、簡単に並列チャンクに分割できますが、シャッフルを必要とするジョインや、マルチインデックスなど、まったく動作しないものもあります。見つけ出す最善の方法は、試してみることです!

+0

そうするでしょう。あなたは、日付時刻の列を解析するためのスピードアップを期待していますか? –

+1

あなたはCSVからの読解を意味しますか? c-parser(デフォルトでは、ほとんどの状況に対処できる)はGILをリリースし、単なるスレッドでも解析するためのスピードアップを得るべきです。コアの数に等しい乗数を得ることは絶対にありません。特に、小さなデータの場合は、常にオーバーヘッドがあります。 – mdurant

+0

私はそれを調べます。普通のパンダ版のスピードアップを得る方法はありますか? –

関連する問題