Spaces:
Build error
Build error
"""High-level support for working with threads in asyncio""" | |
import functools | |
import contextvars | |
from . import events | |
__all__ = "to_thread", | |
async def to_thread(func, /, *args, **kwargs): | |
"""Asynchronously run function *func* in a separate thread. | |
Any *args and **kwargs supplied for this function are directly passed | |
to *func*. Also, the current :class:`contextvars.Context` is propagated, | |
allowing context variables from the main thread to be accessed in the | |
separate thread. | |
Return a coroutine that can be awaited to get the eventual result of *func*. | |
""" | |
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) | |