Диспетчер контекста Python :условное выполнение тела?

Я пишу приложение на основе MPI -(, но MPI не имеет значения в моем вопросе, я упоминаю его только для того, чтобы показать обоснование )и в некоторых случаях, когда элементов работы меньше, чем процессов, мне нужно создать новый коммуникатор, исключив процессы, которые не имеют ничего общего. Наконец, новый коммуникатор должен быть освобожден процессами, у которых есть работа (и только ими ).

Аккуратным способом сделать это было бы написать:

with filter_comm(comm, nworkitems) as newcomm:
   ... do work with communicator newcomm...

что тело выполняется только теми процессами, у которых есть работа.

Есть ли в менеджере контекста способ избежать выполнения тела? Я понимаю, что менеджеры контекста по праву были разработаны, чтобы избежать сокрытия потоков управления, но мне интересно, можно ли обойти это, поскольку в моем случае я думаю, что это было бы оправдано для ясности.

15
задан lesmana 17 February 2015 в 16:25
поделиться