限制Dask CPU和内存使用(单节点)

2024-04-25 16:22:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一台计算机上运行Dask,其中运行.compute()对一个巨大的拼花地板文件执行计算将导致Dask耗尽系统上的所有CPU核

import dask as dd

df = dd.read_parquet(parquet_file)  # very large file
print(df.names.unique().compute())

是否可以将dask配置为使用特定数量的CPU核,并将其内存使用限制为32GB?使用Python 3.7.2和Dask 2.9.2


Tags: 文件importdf系统as计算机cpudd
1条回答
网友
1楼 · 发布于 2024-04-25 16:22:41

Dask.distributed.Client创建一个LocalCluster,您可以为其显式设置内存使用和核心数

import numpy as np
import pandas as pd
from dask.distributed import Client
from dask import dataframe as dd

def names_unique(x):
    return x['Names'].unique()

client = Client(memory_limit='2GB', processes=False,
                n_workers=1, threads_per_worker=2)

# Data generation
df = pd.DataFrame({'Names': np.random.choice(['A', 'B', 'C', 'D'], size=1000000),
                   'sales': np.arange(1000000)})
df.to_parquet('parq_df')
ddf = dd.read_parquet('parq_df', npartitions=10)

# Custom computation
sent = client.submit(names_unique, ddf)
names_unique = sent.result().compute()
client.close()

输出:

names_unique
Out[89]: 
0    D
1    B
2    C
3    A
Name: Names, dtype: object

相关问题 更多 >