Написать сопрограмму serial(number, barrier), принимающую два параметра — некоторый номер number и объект barrier типа Barrier.

   1 from random import shuffle
   2 
   3 async def main(num):
   4     bar = asyncio.Barrier(num)
   5     tasks = [serial(i * 2 % num, bar) for i in range(num)]
   6     shuffle(tasks)
   7     await asyncio.gather(*tasks)
   8 
   9 asyncio.run(main(10)) 

0
0
2
2
4
4
6
6
8
8

Спойлер. В очередной раз замечу, что async — это не параллелизм, так что проблем с одновременным доступом, например, к списку number-ов, нет. Я решал задачу так (уверен, что может быть и более простое решение):


CategoryHomework

LecturesCMC/PythonIntro2023/Homework_BarrierSync (последним исправлял пользователь FrBrGeorge 2023-12-09 21:56:54)