[Python] programma già in esecuzione

Eriol eriol a huine.org
Mar 29 Ago 2006 15:49:47 CEST


Alle 13:02, martedì 29 agosto 2006, Marco ha scritto:
> Mi servirebbe sapere se c'è qualcosa già nelle librerie di python per
> sapere se lo script che sto lanciato è già in esecuzione.
> Mi servirebbe impedire che un programma che gira ogni tot di tempo
> entri in esecuzione più volte.

Io farei uso di un lockfile dato che utilizzo un sistema unix. Non ho idea 
se windows abbia un meccanismo apposito per questo stesso obiettivo.

Il codice che segue non puo` essere eseguito sotto windows (il modulo 
fcntl e` disponibile solo per unix), ma forse con cygwin funziona.

import fcntl
import sys
 
lockfile = "/tmp/namescript.lock" 

lock_fd = open(lockfile,"w") 

#Se non riesco ad acquisire il lock sul file esco con un messaggio 
#d'errore
try:
    fcntl.flock(lock_fd , fcntl.LOCK_EX | fcntl.LOCK_NB)
except IOError: 
    sys.exit("Impossibile ottenere il lock su %s" % lockfile)

#
# Codice da eseguire
#

#Rilascio il lock
fcntl.flock(lock_fd, fcntl.LOCK_UN) 

Spero sia d'aiuto.

-- 
 Eriol - *p = NULL; - EIBTI 
 GPG Key ID 297BE0CA


Maggiori informazioni sulla lista Python