Я публікую це як відповідь, тому що я новий користувач, і переповнення стека ще не дозволяє мені проголосувати.
Рішення Соріна Сбарнеа працює для мене в ОС X, Linux та Windows, і я за це вдячний.
Однак tempfile.gettempdir () поводиться в одну сторону під ОС X та Windows, а інший під іншими деякими / багатьма / усіма (?) * Ніксами (ігноруючи той факт, що OS X також Unix!). Різниця важлива для цього коду.
OS X і Windows мають специфічні для користувача часові каталоги, тому тимчасовий файл, створений одним користувачем, не відображається іншому користувачеві. На відміну від цього, у багатьох версіях * nix (я тестував Ubuntu 9, RHEL 5, OpenSolaris 2008 та FreeBSD 8), темп реж / tmp для всіх користувачів.
Це означає, що коли файл блокування створено на багатокористувацькій машині, він створюється в / tmp, і тільки той користувач, який створив файл блокування вперше, зможе запустити програму.
Можливим рішенням є вбудовування поточного імені користувача у ім’я файлу блокування.
Варто зауважити, що рішення OP щодо захоплення порту також буде погано поводитися на багатокористувацькій машині.