Я бы ожидал, что в следующем коде первое вычисление займет 3 + сек, а второе - намного быстрее. Что я должен сделать, чтобы получить dask, чтобы избежать повторного выполнения вычисления клиенту? (я уже искал ответ на этот вопрос, относительно чистый = True и ничего не нашел)Избегайте повторного вычисления тех же значений в Dask?
from dask import delayed, compute
from dask.distributed import Client
@delayed(pure=True)
def foo(a):
time.sleep(3)
return 1
foo_res = foo(1)
client = Client()
import time
t1 = time.time()
results = compute(foo_res, get=client.get)
t2 = time.time()
print("Time : {}".format(t2-t1))
t1 = time.time()
results = compute(foo_res, get=client.get)
t2 = time.time()
print("Time : {}".format(t2-t1))
выход:
Time : 3.01729154586792
Time : 3.0170397758483887
А я прошел через эти документы, но не нашел, что, спасибо! Мне очень нравится, как вы хэш args btw, который является объектно-ориентированным независимым, но специфичным для данных. Очень полезная библиотека, спасибо! – julienl
Документ, который вы отправили, предполагает, что любой из 'persist',' compute' и т. Д. Будет работать до тех пор, пока ссылка остается. напр: 'событие foo_res_future = client.compute (foo_res)' Кажется, работает для меня является то, что правильно? – julienl
Правильно, но это должно быть 'client.compute', а не' dask.compute'. Это по историческим причинам. – MRocklin