gpt4 book ai didi

python - Dask:非常低的 CPU 使用率和多线程?这是预期的吗?

转载 作者:太空狗 更新时间:2023-10-30 01:20:37 24 4
gpt4 key购买 nike

我正在使用 dask 作为 how to parallelize many (fuzzy) string comparisons using apply in Pandas?

基本上我做了一些调用 PandasFuzzywuzzy 的计算(没有向磁盘写入任何内容)(如果有帮助的话,这显然可能不会释放 GIL)并且我运行类似的东西:

dmaster = dd.from_pandas(master, npartitions=4)
dmaster = dmaster.assign(my_value=dmaster.original.apply(lambda x: helper(x, slave), name='my_value'))
dmaster.compute(get=dask.multiprocessing.get)

但是,代码的一个变体已经运行了 10 个小时,而且还没有结束。我在 Windows 任务管理器中注意到

  • RAM 利用率 相当低,与我的数据大小相对应
  • CPU 使用率 每 2/3 秒左右从 0% 反弹到 5%
  • 我有大约 20 个大小为 100MB 的 Python 进程,一个 Python 进程可能包含大小为 30GB 的数据(我有一台 128GB 的​​机器和一个 8 核 CPU )

问题是:这种行为是预期的吗?我在这里设置一些 dask 选项显然是错误的吗?

当然,我知 Prop 体情况取决于我到底在做什么,但也许上面的模式已经可以告诉我某些事情是非常错误的?

非常感谢!!

最佳答案

Of course, I understand the specifics depends on what exactly I am doing, but maybe the patterns above can already tell that something is horribly wrong?

这是非常正确的。识别性能问题很棘手,尤其是当并行计算发挥作用时。以下是我想到的一些事情。

  1. 多处理调度程序必须每次都在不同进程之间移动数据。序列化/反序列化周期可能非常昂贵。使用 distributed scheduler会更好地处理这件事。
  2. 您的函数 helper 可能会做一些奇怪的事情。
  3. 通常最好避免使用 apply,即使在 Pandas 中也是如此。

通常,解决这些问题的一个好方法是创建一个 minimal, complete, verifiable example分享其他人可以轻松复制和玩耍的东西。通常在创建这样的示例时,您无论如何都会找到问题的解决方案。但是,如果这没有发生,至少您可以将责任推给库维护者。在创建这样的示例之前,大多数库维护人员都懒得花时间,因为几乎总是有太多特定于手头问题的详细信息以保证免费服务。

关于python - Dask:非常低的 CPU 使用率和多线程?这是预期的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38147839/

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