Portál AbcLinuxu, 12. května 2025 02:23
Předem díky.
Pokud by to náhodou někoho zajímalo, problém jsem nakonec vyřešil jednodušeji přes semafory jako jednoho z nástrojů IPC. Sice to není tak přenositelné jako souborové nebo adresářové zámky, ale zase je to čistě paměťová operace.
from pyipc import *
from sys import stderr
# Unikatni klic
SEM_GID = 123456789
try:
semlock = ipcmod.semget(SEM_GID, 1, IPC_CREAT | IPC_EXCL)
except:
stderr.write('Another instance already running !')
exit(1)
...
ipcmod.semremove(semlock)
Docela mě to překvapilo, ale standardní moduly pythonu neobsahují wrapper kolem většiny fcí k System V IPC. Jednu z implementací lze najít např. zde, ale tohle by už mělo být v základu a ne ta zmršenina v threading.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.