Есть ли у блокировки Asyncio.dondition другая цель, помимо совместимости с потоком. Кондиционирование?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли у блокировки Asyncio.dondition другая цель, помимо совместимости с потоком. Кондиционирование?

Сообщение Anonymous »

Я хотел бы спросить об asyncio.donition. Я не знаком с этой концепцией, но я знаю и понимаю замки, семафоры и очереди с моих учеников. Я посмотрел на источник. Основная функциональность достигается с помощью FIFO фьючерса. Каждый ожидающий коратика добавляет новое будущее и ждет его. Другая Coroutine может вызовать notify () , который устанавливает результат одного или, необязательно больше будущего из FIFO, и который разбудит такое же количество кораток ожидания. Действительно просто до этого момента. < /P>

Однако реализация и использование более сложны, чем эта. Ожидание коратики должна сначала приобрести блокировку, связанную с условием, чтобы иметь возможность ждать (и wait () выпускает его во время ожидания). Также уведомление должно приобрести замок, чтобы иметь возможность уведомлять (). Это приводит к оператору < /code> перед каждой операцией: < /p>

async with condition:
# condition operation (wait or notify)
< /code>

или иначе runtimeerror < /code> ocds. Какой ресурс нам нужен для защиты с помощью замка? В Asyncio всегда может быть только одна Coroutine, выполняемая в цикле событий, нет «критических разделов», как известно из потока. < /p>

Действительно ли эта блокировка действительно необходима (почему?) Или для совместимости только с кодом потока? то есть создание < /p>

async with condition:
< /code>

в основном необязательный no-op. < /p>

Подробнее здесь: https://stackoverflow.com/questions/515 ... ility-with
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»