Вы можете попробовать объекты Lock
во встроенном пакете multiprocessing
.Я не уверен, будет ли блокировка автоматически разблокироваться при сборке мусора, но вы всегда можете создать подкласс multiprocessing.Process
, например:
class MyProc(multiprocessing.Process):
def __init__(self):
self.ipc_lock = multiprocessing.Lock()
# ...
return
def __del__(self):
self.ipc_lock.release()
return
, если вам нужно разблокировать, если сработало исключение, затем поставьтечто в (переопределенном) run
методе.