Hi Francesco, Francesco Bochicchio wrote: > On 13 Mar, 19:45, News123 <news1...@free.fr> wrote: >> Hi, >> >> I'd like to make sure, that a certain python program will only be run >> once per host. (linux/windows) >> >> so if the program is started a second time it should just terminate and >> let the other one run. >> >> This does not have to be the fastest solution, but it should be reliable. >> >> I have a few ideas, but wonder, which one is the most common >> >> My ideas so far: >> >> pid file and file locking >> -------------------------- >> create a file like program.pid with the pid of the running program an >> use file locking to avoid race connditions. >> >> However I currently don't know how to do file locking under windows >> and I don't know how to do file lockng with python and linux. >> I'll start googling. >> >> sqlite and locking >> -------------------- >> quite some time ago I used a mysql table and locking as an inter-host mutex. >> >> Perhaps sqlite would be good enough for an inter process mutex for >> processes on the same host, but I don't know it well enough. >> >> interprocess mutex >> -------------------- >> well I even don't know whether something like this exists on linux / windows >> >> Thanks in advanced for any tips >> >> N > > Apart from file, a portable solution would be to bind to an unused > porta and assume that finding the port busy means that your program is > already running on the port. Yes, this should work. I assume in this case the bind() function would handle the race condition. > > On recent python installations there is the multiprocessing module > which provides process-level semaphores, but I don't know how portable > they are.
Yes, there are process level semaphores in multiprocesing, but if I understood well, they would either require a common parent process or one process, which were acting as a manager, but then the question would be how to make sure, that the manager process were started only once. ( bind port? ) -- http://mail.python.org/mailman/listinfo/python-list