FAILED_PROCESS = "Process 3"
class ProcessInitError( Exception) :
pass
class Process:
def __init__( self, name) :
if name == FAILED_PROCESS:
raise ProcessInitError
( "Something goes wrong with {name}" .
format ( name
= name
) ) self.name = name
print( self.name , "created" )
def stop( self) :
print( self.name , "stopped" )
class ProcessManager:
def __init__( self) :
self.processes = [ ]
def init( self, name) :
process = Process( name)
self.processes .append ( process)
def release_all( self) :
for process in reversed( self.processes ) :
process.stop ( )
pm = ProcessManager( )
try:
pm.init ( "Process 1" )
pm.init ( "Process 2" )
pm.init ( "Process 3" )
except ProcessInitError as err:
print( err)
pm.release_all ( )
RkFJTEVEX1BST0NFU1MgPSAiUHJvY2VzcyAzIgoKY2xhc3MgUHJvY2Vzc0luaXRFcnJvcihFeGNlcHRpb24pOgoJcGFzcwoKY2xhc3MgUHJvY2VzczoKCWRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKCQlpZiBuYW1lID09IEZBSUxFRF9QUk9DRVNTOgoJCQlyYWlzZSBQcm9jZXNzSW5pdEVycm9yKCJTb21ldGhpbmcgZ29lcyB3cm9uZyB3aXRoIHtuYW1lfSIuZm9ybWF0KG5hbWU9bmFtZSkpCgkJc2VsZi5uYW1lID0gbmFtZQoJCXByaW50KHNlbGYubmFtZSwgImNyZWF0ZWQiKQoJCQoJZGVmIHN0b3Aoc2VsZik6CgkJcHJpbnQoc2VsZi5uYW1lLCAic3RvcHBlZCIpCgpjbGFzcyBQcm9jZXNzTWFuYWdlcjoKCWRlZiBfX2luaXRfXyhzZWxmKToKCQlzZWxmLnByb2Nlc3NlcyA9IFtdCgkJCglkZWYgaW5pdChzZWxmLCBuYW1lKToKCQlwcm9jZXNzID0gUHJvY2VzcyhuYW1lKQoJCXNlbGYucHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNzKQoJCQoJZGVmIHJlbGVhc2VfYWxsKHNlbGYpOgoJCWZvciBwcm9jZXNzIGluIHJldmVyc2VkKHNlbGYucHJvY2Vzc2VzKToKCQkJcHJvY2Vzcy5zdG9wKCkKCQkKCnBtID0gUHJvY2Vzc01hbmFnZXIoKQp0cnk6CglwbS5pbml0KCJQcm9jZXNzIDEiKQoJcG0uaW5pdCgiUHJvY2VzcyAyIikKCXBtLmluaXQoIlByb2Nlc3MgMyIpCmV4Y2VwdCBQcm9jZXNzSW5pdEVycm9yIGFzIGVycjoKCXByaW50KGVycikKCXBtLnJlbGVhc2VfYWxsKCkKCXJhaXNlCg==
stdout
Process 1 created
Process 2 created
Something goes wrong with Process 3
Process 2 stopped
Process 1 stopped
stderr
Traceback (most recent call last):
File "./prog.py", line 33, in <module>
pm.init("Process 3")
File "./prog.py", line 21, in init
process = Process(name)
File "./prog.py", line 9, in __init__
raise ProcessInitError("Something goes wrong with {name}".format(name=name))
__main__.ProcessInitError: Something goes wrong with Process 3