Spec-Zone.ru › Polars

polars.LazyFrame.collect_async

LazyFrame.collect_async(
    *,
    gevent: bool = False,
    engine: EngineType = 'auto',
    optimizations: QueryOptFlags = (,
), ) → Awaitable[DataFrame] | _GeventDataFrameResult[DataFrame]

Собрать DataFrame асинхронно в пуле потоков.

Предупреждение

Эта функциональность считается нестабильной. Она может быть изменена в любой момент без того, чтобы это считалось нарушением обратной совместимости.

Собирает данные в DataFrame (как collect()), но вместо непосредственного возврата DataFrame сбор запланирован в пуле потоков, а этот метод возвращает управление почти мгновенно.

Это может быть полезно, если вы используете gevent или asyncio и хотите передать управление другим гринлетам/задачам, пока собираются LazyFrames.

Параметры:
gevent

Вернуть обёртку для gevent.event.AsyncResult вместо Awaitable

engine

Выбрать движок для обработки запроса (по умолчанию "auto"). Также можно передать экземпляр Engine. Поддерживаются следующие имена движков:

  • "auto": использовать движок, заданный с помощью Config.set_engine_affinity или переменной среды POLARS_ENGINE_AFFINITY; если она не задана, использовать "in-memory" (это значение по умолчанию может измениться в будущих выпусках).
  • "in-memory": использовать движок для работы в памяти; это движок по умолчанию.
  • "streaming": использовать потоковый движок, который обрабатывает запросы пакетами, снижая нагрузку на память и часто превосходя по производительности движок для работы в памяти. Вскоре он станет движком Polars по умолчанию.
  • "gpu": использовать движок CUDA GPU (требуется графический процессор Nvidia и cudf-polars). Для точной настройки, например выбора устройства в системах с несколькими GPU, передайте объект GPUEngine.

Если выбранный движок не может выполнить запрос, Polars переключается на движок для работы в памяти.

Примечание

Движок GPU не поддерживает асинхронное выполнение или выполнение в фоновом режиме. Если включён любой из этих режимов, выполнение на GPU отключается.

optimizations

Этапы оптимизации, выполняемые при оптимизации запроса.

Предупреждение

Эта функциональность считается нестабильной. Она может быть изменена в любой момент без того, чтобы это считалось нарушением обратной совместимости.

Возвращает:
If gevent=False (default) then returns an awaitable.
If gevent=True then returns wrapper that has a
.get(block=True, timeout=None) method.

См. также

polars.collect_all

Собрать несколько LazyFrame одновременно.

polars.collect_all_async

Лениво собрать несколько LazyFrame одновременно.

Примечания

В случае ошибки set_exception используется для asyncio.Future/gevent.event.AsyncResult и повторно вызывается ими.

Примеры

>>> import asyncio
>>> lf = pl.LazyFrame(
...     {
...         "a": ["a", "b", "a", "b", "b", "c"],
...         "b": [1, 2, 3, 4, 5, 6],
...         "c": [6, 5, 4, 3, 2, 1],
...     }
... )
>>> async def main():
...     return await (
...         lf.group_by("a", maintain_order=True)
...         .agg(pl.all().sum())
...         .collect_async()
...     )
>>> asyncio.run(main())
shape: (3, 3)
┌─────┬─────┬─────┐
│ a   ┆ b   ┆ c   │
│ --- ┆ --- ┆ --- │
│ str ┆ i64 ┆ i64 │
╞═════╪═════╪═════╡
│ a   ┆ 4   ┆ 10  │
│ b   ┆ 11  ┆ 10  │
│ c   ┆ 6   ┆ 1   │
└─────┴─────┴─────┘

© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/lazyframe/api/polars.LazyFrame.collect_async.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API