有时候我们需要程序只存在一个运行实例。一般方法就是创建一个锁文件 ,然后运行完成后删除该锁文件 。
import os
LOCK_FILE = "/tmp/lockfile.tmp"
def hasSelfProcess():
"""
检查本程序是否已经被用户启动了
@return: True: 本程序已经被用户启动
False: 本程序未被用户启动
@rtype: boolean
"""
try:
os.open(LOCK_FILE, os.O_CREAT|os.O_EXCL|os.O_RDWR)
except OSError:
return True
else:
return False
在每次运行程序前,调用此方法进行判断,就可知道本程序是否已经有另外一个实例在运行了。
当然运行完了还要再删除临时文件, 这个可以通过Python的自带模块atexit来实现。
import atexit
@atexit.register
def clearLockFile():
if osp.isfile(LOCK_FILE):
try:
os.remove(LOCK_FILE)
except OSError:
os.system("rm -f %s" % LOCK_FILE)
在程序中直接加入以上代码即可,由于用了@atexit.register对clearLockFile进行了装饰,所以当Python程序退出时,会自动