#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