Указатель в условии цикла while в PythonPython

Программы на Python
Ответить
Anonymous
 Указатель в условии цикла while в Python

Сообщение Anonymous »

Мне нужна функция_B, чтобы дождаться function_A. Функция wait_for_action_to_be_done() выполняет эту работу, но мне хотелось бы что-то более удобное с wait_for(action_to_wait). Проблема в том, что в wait_for(action_to_wait) переменная action_to_wait в условии цикла while никогда не обновляется. Думаю, что-то вроде указателя поможет.
import asyncio

action_done = False

async def function_A(delay):
global action_done
while True:
await asyncio.sleep(delay)
action_done = True
break

async def wait_for(action_to_wait):
print("wait for action to be done...")
while not action_to_wait:
await asyncio.sleep(0.1)

async def wait_for_action_to_be_done():
print("wait for action to be done...")
while not action_done:
await asyncio.sleep(0.1)

async def function_B():
await wait_for_action_to_be_done() # OK, works
# await wait_for(action_done) # KO, infinite while loop as the condition is never updated
print("performing next action...")

async def main():
await asyncio.gather(function_A(2), function_B())

asyncio.run(main())


Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-python
Ответить

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

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

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

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

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