Making a python script only be able to run once at a time [duplicate]
Possible Duplicate:
Python: single instance of program
I am looking to make a python script be unique in the sense that it can only run once at a time. For example if I run the script and open another session of the same script a second time and the first session is still running, then the second session will just exit and do nothing. Anyone knows how I could implement this?
Never written python before, but this is what I've just implemented in mycheckpoint, to prevent it being started twice or more by crond:
import os
import sys
import fcntl
fh=0
def run_once():
global fh
fh=open(os.path.realpath(__file__),'r')
try:
fcntl.flock(fh,fcntl.LOCK_EX|fcntl.LOCK_NB)
except:
os._exit(0)
run_once()
One poor man's solution is to use a file based lock. If you open a file using os.open(), there is a flag that allows an exclusive lock on the file. See this for reference.
精彩评论