allow return from run_in_thread (#3477)

This commit is contained in:
Thomas Brandého 2024-06-13 18:59:05 +02:00 committed by GitHub
parent 42f34f763e
commit 1c8bebcaf6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,12 +1,21 @@
"""Miscellaneous functions for the experimental package."""
import asyncio
from typing import Any
async def run_in_thread(func):
async def run_in_thread(func) -> Any:
"""Run a function in a separate thread.
To not block the UI event queue, run_in_thread must be inside inside a rx.background() decorated method.
Args:
func (callable): The function to run.
func (callable): The non-async function to run.
Returns:
Any: The return value of the function.
"""
await asyncio.get_event_loop().run_in_executor(None, func)
assert not asyncio.coroutines.iscoroutinefunction(
func
), "func must be a non-async function"
return await asyncio.get_event_loop().run_in_executor(None, func)