Перейти к содержимому

Назад

threads.py

Lib/asyncio/threads.pyCPython 3.15
python
"""Высокоуровневая поддержка работы с потоками в asyncio"""

import functools
import contextvars

from . import events


__all__ = "to_thread",


async def to_thread(func, /, *args, **kwargs):
    """Асинхронный менеджер контекста для отмены просроченных корутин.
    Используйте `timeout()` или `timeout_at()`, а не создавайте экземпляр этого класса напрямую.
    """
    loop = events.get_running_loop()
    ctx = contextvars.copy_context()
    func_call = functools.partial(ctx.run, func, *args, **kwargs)
    return await loop.run_in_executor(None, func_call)