多くのファイルに分割された多くのテーブルの結果を個別に計算する、簡単に並列化できるタスクがあります。遅延リストまたはdask.dataframeリストを作成できます(また、dictなども試しました)、計算するすべての結果を取得することはできません(を使用してdaskグラフスタイルの辞書から個々の結果を取得できます.get()
が、再びできませんすべての結果を簡単に計算できます)。最小限の例を次に示します。
>>> df = dd.from_pandas(pd.DataFrame({'a': [1,2]}), npartitions=1)
>>> numbers = [df['a'].mean() for _ in range(2)]
>>> dd.compute(numbers)
([<dask.dataframe.core.Scalar at 0x7f91d1523978>,
<dask.dataframe.core.Scalar at 0x7f91d1523a58>],)
同様に:
>>> from dask import delayed
>>> @delayed
... def mean(data):
... sum(data) / len(data)
>>> delayed_numbers = [mean([1,2]) for _ in range(2)]
>>> dask.compute(delayed_numbers)
([Delayed('mean-0e0a0dea-fa92-470d-b06e-b639fbaacae3'),
Delayed('mean-89f2e361-03b6-4279-bef7-572ceac76324')],)
[3, 3] を取得したいと思います。これは、遅延コレクション docsに基づいて期待されるものです。
私の本当の問題については、実際には HDF5 ファイルのテーブルを計算したいと思いますが、それを使用できることを考えるとdask.get()
、遅延/ダスク データフレーム ステップをすでに指定していると確信しています。
辞書に直接結果をもたらすソリューションに興味がありますが、(キー、値) タプルのリストを に返すこともできますdict()
。これは、おそらく大きなパフォーマンス ヒットではありません。