gpt4 book ai didi

python - 从多进程切换到多线程 Dask.DataFrame

转载 作者:行者123 更新时间:2023-12-02 08:52:55 33 4
gpt4 key购买 nike

我有一个关于使用 dask 并行化我的代码的问题。我有一个 pandas 数据框和 8 核 CPU。所以我想按行应用一些函数。这是示例:

import dask.dataframe as dd
from dask.multiprocessing import get
# o - is pandas DataFrame
o['dist_center_from'] = dd.from_pandas(o, npartitions=8).map_partitions(lambda df: df.apply(lambda x: vincenty((x.fromlatitude, x.fromlongitude), center).km, axis=1)).compute(get=get)

该代码同时运行 8 个 CPU。现在,我遇到一个问题,每个进程都会消耗很多内存,就像主进程一样。所以,我想用共享内存多线程运行它。我尝试将 from dask.multiprocessing import get 更改为 from dask.threaded import get。但它并没有使用我所有的 CPU,而且我认为它在单核上运行。

最佳答案

是的,这就是线程和进程之间的权衡:

  • 线程:只有在使用非 Python 代码时才能很好地并行化(大多数 Pandas API 都在数字数据上使用,而不是 apply)
  • 进程:需要在进程之间复制数据

关于python - 从多进程切换到多线程 Dask.DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51202594/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com