polars.LazyFrame.profile
-
Профилирование LazyFrame.
Устарело с версии 1.43.0: Этот метод был создан для прежнего движка, работающего в памяти, однако начиная с версии 2.0 Polars по умолчанию использует потоковый движок. Из-за параллельной природы потокового движка данные профилирования, полученные этой функцией, могут вводить в заблуждение.
Метод выполнит запрос и вернёт кортеж, содержащий материализованный DataFrame и DataFrame с данными профилирования для каждого выполненного узла.
Время измеряется в микросекундах.
- Параметры:
-
- type_coercion
-
Выполнить оптимизацию приведения типов.
Устарело с версии 1.30.0: Используйте параметры
optimizations. - predicate_pushdown
-
Выполнить оптимизацию проталкивания предикатов.
Устарело с версии 1.30.0: Используйте параметры
optimizations. - projection_pushdown
-
Выполнить оптимизацию проталкивания проекций.
Устарело с версии 1.30.0: Используйте параметры
optimizations. - simplify_expression
-
Выполнить оптимизацию упрощения выражений.
Устарело с версии 1.30.0: Используйте параметры
optimizations. - no_optimization
-
Отключить (некоторые) оптимизации.
Устарело с версии 1.30.0: Используйте параметры
optimizations. - slice_pushdown
-
Оптимизация проталкивания срезов.
Устарело с версии 1.30.0: Используйте параметры
optimizations. - comm_subplan_elim
-
Будет предпринята попытка кэшировать ветвящиеся подзапросы, возникающие при соединениях таблицы с самой собой или при объединениях.
Устарело с версии 1.30.0: Используйте параметры
optimizations. - comm_subexpr_elim
-
Общие подвыражения будут кэшироваться и использоваться повторно.
Устарело с версии 1.30.0: Используйте параметры
optimizations. - cluster_with_columns
-
Объединить последовательные независимые вызовы with_columns
Устарело с версии 1.30.0: Используйте параметры
optimizations. - collapse_joins
-
Объединить соединение и фильтры в более быстрое соединение
Устарело с версии 1.30.0: Используйте параметры
optimizations. - show_plot
-
Показать диаграмму Ганта с результатами профилирования
- truncate_nodes
-
Обрезать подписи на диаграмме Ганта до указанного числа символов.
- figsize
-
Размер графика профилирования в matplotlib
- engine
-
Выбрать движок для обработки запроса (по умолчанию
"auto"). Также можно передать экземплярEngine. Поддерживаются следующие названия движков:-
"auto": использовать движок, заданный с помощьюConfig.set_engine_affinityили переменной средыPOLARS_ENGINE_AFFINITY; если она не задана, использовать"in-memory"(значение по умолчанию может измениться в одном из будущих выпусков). -
"in-memory": использовать движок, работающий в памяти; это движок по умолчанию. -
"streaming": использовать потоковый движок, который обрабатывает запросы пакетами, снижая нагрузку на память и часто превосходя по производительности движок, работающий в памяти. Вскоре он станет движком Polars по умолчанию. -
"gpu": использовать движок CUDA GPU (требуется GPU Nvidia иcudf-polars). Для более точной настройки (например, выбора устройства в системах с несколькими GPU) передайте объектGPUEngine.
Если выбранный движок не может выполнить запрос, Polars переключится на движок, работающий в памяти.
Примечание
Режим GPU считается нестабильным. Не все запросы могут быть успешно выполнены на GPU, однако при неподдерживаемом выполнении они должны автоматически переключаться на движок по умолчанию.
Запуск с
POLARS_VERBOSE=1покажет, если запрос переключается на другой движок (и почему). -
- optimizations
-
Этапы оптимизации, выполняемые во время оптимизации запроса.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без того, чтобы это считалось нарушением обратной совместимости.
Примеры
>>> lf = pl.LazyFrame( ... { ... "a": ["a", "b", "a", "b", "b", "c"], ... "b": [1, 2, 3, 4, 5, 6], ... "c": [6, 5, 4, 3, 2, 1], ... } ... ) >>> lf.group_by("a", maintain_order=True).agg(pl.all().sum()).sort( ... "a" ... ).profile() (shape: (3, 3) ┌─────┬─────┬─────┐ │ a ┆ b ┆ c │ │ --- ┆ --- ┆ --- │ │ str ┆ i64 ┆ i64 │ ╞═════╪═════╪═════╡ │ a ┆ 4 ┆ 10 │ │ b ┆ 11 ┆ 10 │ │ c ┆ 6 ┆ 1 │ └─────┴─────┴─────┘, shape: (3, 3) ┌─────────────────────────┬───────┬──────┐ │ node ┆ start ┆ end │ │ --- ┆ --- ┆ --- │ │ str ┆ u64 ┆ u64 │ ╞═════════════════════════╪═══════╪══════╡ │ optimization ┆ 0 ┆ 5 │ │ group_by_partitioned(a) ┆ 5 ┆ 470 │ │ sort(a) ┆ 475 ┆ 1964 │ └─────────────────────────┴───────┴──────┘)
LazyFrame.profile(
*,
type_coercion: bool = True,
predicate_pushdown: bool = True,
projection_pushdown: bool = True,
simplify_expression: bool = True,
no_optimization: bool = False,
slice_pushdown: bool = True,
comm_subplan_elim: bool = True,
comm_subexpr_elim: bool = True,
cluster_with_columns: bool = True,
collapse_joins: bool = True,
show_plot: bool = False,
truncate_nodes: int = 0,
figsize: tuple[int,
int] = (18,
8,
), engine: EngineType = 'auto', optimizations: QueryOptFlags = (), **_kwargs: Any, ) → tuple[DataFrame, DataFrame]
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/lazyframe/api/polars.LazyFrame.profile.html