Встречается на собеседованиях • сегодня
Приведи пример вызова состояния гонки в asyncio
В asyncio состояние гонки может возникнуть, когда несколько корутин одновременно изменяют общее состояние без должной синхронизации. Пример:
python
import asyncio
shared_counter = 0
async def increment():
global shared_counter
temp = shared_counter
await asyncio.sleep(0.1) # Имитация IO-операции
shared_counter = temp + 1
async def main():
tasks = [asyncio.create_task(increment()) for _ in range(100)]
await asyncio.gather(*tasks)
print(f"Final counter value: {shared_counter}") # Вероятно, будет меньше 100
asyncio.run(main())
text
Проблема: между чтением (`temp = shared_counter`) и записью (`shared_counter = temp + 1`) может вклиниться другая корутина. Решение - использовать `asyncio.Lock()`:
```python
lock = asyncio.Lock()
async def safe_increment():
async with lock:
global shared_counter
temp = shared_counter
await asyncio.sleep(0.1)
shared_counter = temp + 1Теперь счетчик будет увеличиваться атомарно.

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