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

   1 import asyncio
   2 async def task(p, topic=None):
   3     await p.wait(topic)
   4     print(p.topic)
   5 
   6 async def runner(N):
   7     p = Portal(N)
   8     for j in range(3):
   9         async with asyncio.TaskGroup() as tg:
  10             for i in range(N):
  11                 tg.create_task(task(p, f"FLAG{j}" if i == N // 2 else None))
  12         await p.reset()
  13 
  14 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-06 16:15:44)