Задача: есть скрипт, который, если запустить его еще раз, должен выдать "Program is already running!" Как сделать с помощью mutex это? В pydoc mutex не понял...
Уже это обсуждалось: во-первых, не кроссплатформенно, во-вторых, lock при ресете не удалится, в-третих, если убъется эта прога и запустится другая с тем же PID и названием, мой скрипт никогда не запустится...
Как пример: каждый промежуток времени обновлять для данного lock/pid файла время модифицации (подобно поведению /bin/touch). При попытке запустить очередную копию, проверять:
if (lock_file.timestamp() - current_time()) > N:
lock_file.erase()
lock_file.new()
lock_file.putData("technical information")
...
else:
print "Process already running!"
exit(1)
У каждого процесса будет свой мутех. Т.е. каждый процесс заблокирует свой мутех, и они оба будут весело работать вместе.
Тебе для этого нужен именованный мутех на уровне операционки, т.е.:
1. Не кроссплатформенно
2. Не в стандартной библиотеке питона
Кстати, вопрос ты задал классно, сама формулировка вопроса исключает возможность дать правильный ответ. Одно хорошо, это ЛОР, а значит оригинальный вопрос никого не волнует, а комментсы рулят.
Я сам использовал фигню с COM под Win32, а после прочтения этой ветки понял что файл сам по себе можно использовать как мутех.