дополнительные ключевые слова для dask.вычислить

#python #dask

Вопрос:

В jupyterlab, ?dask.compute покажет

 Signature: dask.compute(*args, **kwargs)
Docstring:
Compute several dask collections at once.

Parameters
----------
args : object
    Any number of objects. If it is a dask object, it's computed and the
    result is returned. By default, python builtin collections are also
    traversed to look for dask objects (for more information see the
    ``traverse`` keyword). Non-dask arguments are passed through unchanged.
traverse : bool, optional
    By default dask traverses builtin python collections looking for dask
    objects passed to ``compute``. For large collections this can be
    expensive. If none of the arguments contain any dask objects, set
    ``traverse=False`` to avoid doing this traversal.
scheduler : string, optional
    Which scheduler to use like "threads", "synchronous" or "processes".
    If not provided, the default is to check the global settings first,
    and then fall back to the collection defaults.
optimize_graph : bool, optional
    If True [default], the optimizations for each collection are applied
    before computation. Otherwise the graph is run as is. This can be
    useful for debugging.
kwargs
    Extra keywords to forward to the scheduler function. 

В нем говорится, что kwargs-это «Дополнительные ключевые слова для пересылки в функцию планировщика».. Но как я мог узнать, какие дополнительные ключевые слова здесь можно использовать?

Комментарии:

1. вам нужно будет проверить полную документацию или вникнуть в исходный код.

Ответ №1:

Согласно комментарию @furas, для получения исчерпывающего списка аргументов вам нужно будет изучить исходный код. Соответствующая документация предназначена для просмотра distributed API, особенно для client.submit записей и client.compute записей.

Однако на практике я обычно использую следующие:

  • resources , указывая конкретные ресурсы, необходимые для выполнения задачи (например resources={"foo": 1} , чтобы каждая задача использовала 1 единицу некоторого ресурса «foo»)
  • priority , указывая приоритет задачи (например priority=-10 , чтобы сделать эту задачу менее важной по сравнению с другими)
  • key , это должно быть уникальное имя для каждой задачи, и я использую его редко, только для того, чтобы иметь пользовательское представление задач на панели мониторинга при отладке/мониторинге длительных задач.

Ответ №2:

Я нашел планировщик страниц документа-обзор, которого нет в TOC документа dask. В нем упоминаются четыре get функции и говорится

 dask.threaded.get: a scheduler backed by a thread pool

dask.multiprocessing.get: a scheduler backed by a process pool

dask.get: a synchronous scheduler, good for debugging

distributed.Client.get: a distributed scheduler for executing graphs on multiple machines. This lives in the external distributed project.
 

Для получения дополнительной информации об отдельных параметрах для каждого планировщика см.
Строки документов для каждой функции получения планировщика.

Итак, в jupyterlab, если мы наберем ?dask.multiprocessing.get , мы получим

 Signature:
dask.multiprocessing.get(
    dsk,
    keys,
    num_workers=None,
    func_loads=None,
    func_dumps=None,
    optimize_graph=True,
    pool=None,
    chunksize=None,
    **kwargs,
)
 

таким образом, мы можем знать num_workers , chunksize что и т. Д. Могут быть использованы в compute