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)