Junior — Middle
Puteți oferi un exemplu de situație în care codul asincron funcționează mai lent decât se aștepta?
sobes.tech AI
Răspuns de la AI
Асинхронный код может работать медленнее ожидаемого, если задачи, которые он выполняет, не являются I/O-bound, а CPU-bound. Например, если асинхронный код запускает много вычислительно тяжелых операций, то из-за ограничений GIL (Global Interpreter Lock) в Python эти операции не смогут выполняться параллельно, и переключение контекста между корутинами добавит накладные расходы.
Также медленнее может быть из-за частого переключения контекста между задачами или если асинхронный код неправильно использует await, вызывая лишние ожидания.
Пример:
import asyncio
async def cpu_bound_task(x):
# имитация тяжелой вычислительной задачи
count = 0
for i in range(10**7):
count += i * x
return count
async def main():
tasks = [cpu_bound_task(i) for i in range(5)]
results = await asyncio.gather(*tasks)
print(results)
asyncio.run(main())
В этом примере асинхронность не ускорит выполнение, так как задачи CPU-bound и выполняются последовательно из-за GIL.