dask - 当单个任务可以在 python 之外消耗大量内存时,dask.delayed 内存管理
问题描述
我有一些计算从 python 调用 pardiso() 求解器。求解器以对 python 不透明的方式分配自己的内存,但用于访问该内存的指针存储在 python 中。如果我尝试使用 dask.delayed 运行这些计算,有没有办法告诉 dask 计算的预期内存消耗,以便它可以适当地安排它们?
解决方案
对于 dask 应该遵守某些约束的情况,至少有两种解决方案:resources
argument 和Semaphore
.
对于资源,工作流程是为每个工作人员分配一些资源(在启动工作人员时通过 cli 或在其他类型的集群中使用resources
kwarg )。然后,代码将指定在或LocalCluster
时每个任务使用了多少资源。.compute
.map/.submit
工作流程Semaphore
是在创建信号量时指定可能的租约数量(请注意,与资源不同,这是一个整数,因此在某种意义上不太灵活)(请参阅文档)。然后,每当访问昂贵的资源时,都应该将其包装在with sem
上下文管理器中。
推荐阅读
- android - Android Studio 渲染错误
- php - 为什么我的 PHP/MySQL 更新查询根本不起作用?
- sql - 格式字符串中的 Oracle To_Char 函数 V
- sql-server-2012 - 将数据从 Netsuite 复制到 SQL Server 2012
- arm - 运行 gem5 完整系统模式时出错
- performance - 超过 100 个事件的完整日历性能
- graphql - Apollo Graphql 创建指令用自定义 GraphQLScalarType 替换 field.type
- java - 无法检索数据 Firebase 数据库
- r - 在美人鱼图中侧向融合箭头
- phpstorm - PhpStorm 列选项