dask 是否在 运行 函数之前等待资源可用?
Does dask wait for resources to be available before running a function?
我正在处理我计划在不久的将来 运行 在服务器上使用的一些代码。现在它可以在我的本地机器上运行,但多个人将同时 运行 该程序。我担心他们会使用比可用的更多的 ram 或 vram。如果我使用 dask,它会在执行函数调用之前等待可用资源吗?
示例代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from numba import njit
import numpy as np
from dask.distributed import Client, LocalCluster
@njit
def addingNumbers (big_array, big_array2, save_array):
for i in range (big_array.shape[0]):
for j in range (big_array.shape[1]):
save_array[i][j] = big_array[i][j] * big_array2[i][j]
return save_array
if __name__ == "__main__":
cluster = LocalCluster()
client = Client(cluster)
big_array = np.random.random_sample((100, 3000))
big_array2 = np.random.random_sample((100, 3000))
save_array = np.zeros(shape=(100, 3000))
x = client.submit(addingNumbers, big_array, big_array2, save_array)
y = client.gather(x)
如果多个人同时运行上面的代码,服务器几乎没内存了,会等到内存可用再提交函数,还是先提交再服务器会出现内存不足错误吗?
如果 dask 不等到 ram 可用,你将如何排队函数调用?
谢谢
If I use dask will it wait for available resources before executing the function call?
Dask 无法预测您的函数需要多少 RAM。但是,您可以为存储的数据设置内存限制,如果 Dask 达到该限制,那么一旦达到该限制,它将停止 运行 任务,而是将一些任务推送到磁盘。参见 https://distributed.dask.org/en/latest/worker.html#memory-management
how would you queue the function call?
最简单的解决方案是限制工作线程中的活动线程数,或者使用 Worker resources 限制每个工作线程仅某些任务的并发。
我正在处理我计划在不久的将来 运行 在服务器上使用的一些代码。现在它可以在我的本地机器上运行,但多个人将同时 运行 该程序。我担心他们会使用比可用的更多的 ram 或 vram。如果我使用 dask,它会在执行函数调用之前等待可用资源吗?
示例代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from numba import njit
import numpy as np
from dask.distributed import Client, LocalCluster
@njit
def addingNumbers (big_array, big_array2, save_array):
for i in range (big_array.shape[0]):
for j in range (big_array.shape[1]):
save_array[i][j] = big_array[i][j] * big_array2[i][j]
return save_array
if __name__ == "__main__":
cluster = LocalCluster()
client = Client(cluster)
big_array = np.random.random_sample((100, 3000))
big_array2 = np.random.random_sample((100, 3000))
save_array = np.zeros(shape=(100, 3000))
x = client.submit(addingNumbers, big_array, big_array2, save_array)
y = client.gather(x)
如果多个人同时运行上面的代码,服务器几乎没内存了,会等到内存可用再提交函数,还是先提交再服务器会出现内存不足错误吗?
如果 dask 不等到 ram 可用,你将如何排队函数调用? 谢谢
If I use dask will it wait for available resources before executing the function call?
Dask 无法预测您的函数需要多少 RAM。但是,您可以为存储的数据设置内存限制,如果 Dask 达到该限制,那么一旦达到该限制,它将停止 运行 任务,而是将一些任务推送到磁盘。参见 https://distributed.dask.org/en/latest/worker.html#memory-management
how would you queue the function call?
最简单的解决方案是限制工作线程中的活动线程数,或者使用 Worker resources 限制每个工作线程仅某些任务的并发。