«Традиционный» ответ Unix - использовать блокировки файлов. Вы можете использовать lockf(3)
для блокировки разделов файла, чтобы другие процессы не могли его редактировать; очень распространенным злоупотреблением является использование этого в качестве взаимного исключения между процессами. Эквивалент Python - fcntl.lockf .
Традиционно вы записываете PID процесса блокировки в файл блокировки, так что взаимные блокировки из-за процессов, умирающих при удержании блокировки, можно идентифицировать и исправить.
Это дает вам то, что вы хотите, поскольку ваша блокировка находится в глобальном пространстве имен (файловой системе) и доступна для всех процессов. Этот подход также имеет преимущество в том, что не-Python-программы могут участвовать в вашей блокировке. Недостатком является то, что вам нужно место для этого файла блокировки, чтобы жить; Кроме того, некоторые файловые системы на самом деле не блокируются правильно, поэтому существует риск, что они молча не смогут добиться исключения. Вы выиграли, некоторые проиграли.