是否可以通过写入磁盘来限制内存使用?

Is it possible limit memory usage by writing to disk?

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

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

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

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

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

可能吗?

非常感谢任何建议!

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

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)

自定义 settings/workflow 还可以做很多事情,但以上可能适用于您的用例。