แน่นอนว่าตัวอย่างจาก Dan จะไม่ได้ผลเท่าที่ควร
อันที่จริงหากสคริปต์ขัดข้องเพิ่มข้อยกเว้นหรือไม่ทำความสะอาดไฟล์ pid สคริปต์จะถูกเรียกใช้หลายครั้ง
ฉันขอแนะนำสิ่งต่อไปนี้จากเว็บไซต์อื่น:
นี่คือการตรวจสอบว่ามีไฟล์ล็อกอยู่แล้วหรือไม่
\
import os
import sys
if os.access(os.path.expanduser("~/.lockfile.vestibular.lock"), os.F_OK):
pidfile = open(os.path.expanduser("~/.lockfile.vestibular.lock"), "r")
pidfile.seek(0)
old_pid = pidfile.readline()
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 เทียบกับกระบวนการทำงานที่มีอยู่เพื่อหลีกเลี่ยงการดำเนินการซ้ำซ้อน
ฉันหวังว่ามันจะช่วยได้