Встречается на собеседованиях • сегодня
С помощью чего можно совместить потоки и асинхронность
В Python для совмещения потоков (threading) и асинхронности (asyncio) можно использовать asyncio.to_thread() (Python 3.9+) или loop.run_in_executor(). Это позволяет запускать блокирующие операции в отдельных потоках, не блокируя event loop.
Пример с asyncio.to_thread():
python
import asyncio
import time
async def async_task():
print("Async task started")
await asyncio.sleep(1)
print("Async task finished")
async def main():
# Запускаем блокирующую функцию в потоке
result = await asyncio.to_thread(time.sleep, 2)
await async_task()
asyncio.run(main())
text
Для более сложных сценариев можно использовать `ThreadPoolExecutor`:
```python
from concurrent.futures import ThreadPoolExecutor
import asyncio
def blocking_io():
# Блокирующая операция
time.sleep(2)
return "Done"
async def main():
loop = asyncio.get_running_loop()
with ThreadPoolExecutor() as pool:
result = await loop.run_in_executor(pool, blocking_io)
print(result)Важно помнить, что GIL все равно ограничивает параллельное выполнение Python-кода в потоках.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы