【问题标题】:Is it possible limit memory usage by writing to disk?是否可以通过写入磁盘来限制内存使用?
【发布时间】:2021-09-11 13:50:10
【问题描述】:

我不明白我想在 Dask 中做的事情是否可行...

目前,我有一长串繁重的文件。 我正在使用多处理库来处理列表的每个条目。我的函数打开并输入,对其进行操作,将结果以二进制文件的形式保存到磁盘,然后返回 None。一切正常。我这样做主要是为了减少 RAM 的使用。

我想在 Dask 中做“同样的事情”,但我不知道如何并行保存二进制数据。在我看来,它应该是这样的:

for element in list:
    new_value = func(element)
    new_value.tofile('filename.binary')

一次只能加载N个元素,其中N是worker的数量,每个元素在每个循环结束时都会被使用和遗忘。

有可能吗?

非常感谢您的任何建议!

【问题讨论】:

    标签: python-3.x dask binaryfiles dask-delayed


    【解决方案1】:

    这听起来确实是一项可行的任务:

    from dask import delayed, compute
    
    @delayed
    def myfunc(element):
        new_value = func(element)
        new_value.tofile('filename.binary') # you might want to
        # change the destination for each element...
        
    delayeds = [myfunc(e) for e in list]
    results = compute(delayeds)
    

    如果您想对任务进行精细控制,您可能希望通过启动 LocalCluster 来明确指定工作人员的数量:

    from dask.distributed import Client, LocalCluster
    cluster = LocalCluster(n_workers=3)
    client = Client(cluster)
    

    可以做更多的事情来自定义设置/工作流程,但也许以上内容适用于您的用例。

    【讨论】:

      猜你喜欢
      • 2016-01-21
      • 2011-01-03
      • 2023-04-01
      • 1970-01-01
      • 2018-06-08
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      相关资源
      最近更新 更多