Написать класс Portal, который работает так же, как Barrier, однако дополнительно имеет property .topic. Этот дескриптор по умолчанию равен None, однако вызов .wait(топик) с не-None параметром его меняет на топик. Главное свойство Portal состоит в том, что к моменту «прохождения портала» любым его клиентом значение topic должно быть равно заданному.

   1 async def task(p, topic=None):
   2     await p.wait(topic)
   3     print(p.topic)
   4 
   5 async def runner(N):
   6     p = Portal(N)
   7     async with asyncio.TaskGroup() as tg:
   8         for j in range(3):
   9             for i in range(N):
  10                 tg.create_task(task(p, f"FLAG{j}" if i == N // 2 else None))
  11 
  12 asyncio.run(runner(5))

FLAG0
FLAG0
FLAG0
FLAG0
FLAG0
FLAG1
FLAG1
FLAG1
FLAG1
FLAG1
FLAG2
FLAG2
FLAG2
FLAG2
FLAG2


CategoryHomework

LecturesCMC/PythonIntro2025/Homework_TwoWay (последним исправлял пользователь FrBrGeorge 2025-12-01 18:50:55)