from multiprocessing import Process
class CustomProcess(Process):
def __init__(self):
super().__init__()
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print(exc_type, exc_val, exc_tb)
print("Посмертное действие")
if exc_type is IndexError: # Можно свой кастомный класс написать
print(self.my_value)
return self # Таким образом мы не выбросим никакую ошибку из контекстного менеджера
def do_anything(self):
...
self.my_value = 'SOME VALUE'
...
raise IndexError()
if __name__ == '__main__':
with CustomProcess() as process:
process.do_anything()
print(process.my_value)
Возможно, есть решение намного лучше, я пока не придумал красивее.
Владимир Коротенко, "make" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Нужно как-то в Path добавить ? А какой именно make ?
Евгений Шатунов, Да, я решил для начала покрыть только вектор, лист для самообучения. Действительно, у меня сложности в синтаксической части передачи конкретной перегрузки.
Wataru, Неужели нельзя как-то иначе ? Мне бы хотелось написать удобную функцию, которая различает реализацию для контейнеров и обычных типов, но я так понимаю удобство это не про С++ ? Тогда может быть вручную перегрузить для всех стандартных типов ? Но мне кажется это решение некорректным.
Возможно, есть решение намного лучше, я пока не придумал красивее.