是否可以通过写入磁盘来限制内存使用?
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 还可以做很多事情,但以上可能适用于您的用例。
我不明白我想在 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 还可以做很多事情,但以上可能适用于您的用例。