首页 > 解决方案 > 当单个任务可以在 python 之外消耗大量内存时,dask.delayed 内存管理

问题描述

我有一些计算从 python 调用 pardiso() 求解器。求解器以对 python 不透明的方式分配自己的内存,但用于访问该内存的指针存储在 python 中。如果我尝试使用 dask.delayed 运行这些计算,有没有办法告诉 dask 计算的预期内存消耗,以便它可以适当地安排它们?

标签: daskpardiso

解决方案


对于 dask 应该遵守某些约束的情况,至少有两种解决方案:resourcesargument 和Semaphore.

对于资源,工作流程是为每个工作人员分配一些资源(在启动工作人员时通过 cli 或在其他类型的集群中使用resourceskwarg )。然后,代码将指定在或LocalCluster时每个任务使用了多少资源。.compute.map/.submit

工作流程Semaphore是在创建信号量时指定可能的租约数量(请注意,与资源不同,这是一个整数,因此在某种意义上不太灵活)(请参阅文档)。然后,每当访问昂贵的资源时,都应该将其包装在with sem上下文管理器中。


推荐阅读