बेशक डैन से उदाहरण काम नहीं करेगा जैसा कि यह होना चाहिए।
दरअसल, यदि स्क्रिप्ट क्रैश हो जाए, तो एक अपवाद को बढ़ाएं, या पीआईडी फ़ाइल को साफ न करें, स्क्रिप्ट को कई बार चलाया जाएगा।
मैं एक अन्य वेबसाइट से निम्नलिखित का सुझाव देता हूं:
यह जांचना है कि क्या पहले से ही कोई लॉक फाइल मौजूद है
\#/usr/bin/env python
import os
import sys
if os.access(os.path.expanduser("~/.lockfile.vestibular.lock"), os.F_OK):
#if the lockfile is already there then check the PID number
#in the lock file
pidfile = open(os.path.expanduser("~/.lockfile.vestibular.lock"), "r")
pidfile.seek(0)
old_pid = pidfile.readline()
# Now we check the PID from lock file matches to the current
# process PID
if os.path.exists("/proc/%s" % old_pid):
print "You already have an instance of the program running"
print "It is running as process %s," % old_pid
sys.exit(1)
else:
print "File is there but the program is not running"
print "Removing lock file for the: %s as it can be there because of the program last time it was run" % old_pid
os.remove(os.path.expanduser("~/.lockfile.vestibular.lock"))
यह उस कोड का हिस्सा है जहां हम लॉक फाइल में PID फाइल रखते हैं
pidfile = open(os.path.expanduser("~/.lockfile.vestibular.lock"), "w")
pidfile.write("%s" % os.getpid())
pidfile.close()
यह कोड मौजूदा चल रही प्रक्रिया की तुलना में pid के मूल्य की जांच करेगा। डबल निष्पादन से बचता है।
मुझे उम्मीद है इससे मदद मिलेगी।