Back to questions
Middle — Middle+
58
Как библиотека asyncio обеспечивает выполнение кода, использующего блокирующие CPU операции?
Answer from AI
sobes.tech AI
Библиотека asyncio в Python предназначена для асинхронного ввода-вывода и не может напрямую выполнять блокирующие CPU операции без блокировки цикла событий. Чтобы эффективно работать с такими операциями, asyncio использует механизм запуска блокирующих задач в отдельном потоке или процессе, например, через loop.run_in_executor(). Это позволяет не блокировать главный цикл событий и продолжать обработку других асинхронных задач.
Пример использования:
import asyncio
import time
def blocking_cpu_task(x):
time.sleep(2) # имитация блокирующей CPU операции
return x * x
async def main():
loop = asyncio.get_running_loop()
result = await loop.run_in_executor(None, blocking_cpu_task, 10)
print(f'Result: {result}')
asyncio.run(main())
Таким образом, asyncio обеспечивает выполнение блокирующих CPU операций, вынося их в отдельные потоки или процессы, не блокируя основной асинхронный цикл.