制作python脚本只能一次运行一次

时间:2010-06-02 16:10:25

标签: python

  

可能重复:
  Python: single instance of program

我希望让python脚本独一无二,因为它一次只能运行一次。例如,如果我运行脚本并再次打开同一脚本的另一个会话,并且第一个会话仍在运行,那么第二个会话将退出并且什么都不做。谁知道我怎么能实现这个?

2 个答案:

答案 0 :(得分:1)

之前从未编写过python,但这是我刚刚在mycheckpoint中实现的,以防止它被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()

答案 1 :(得分:0)

一个穷人的解决方案是使用基于文件的锁。如果使用os.open()打开文件,则会有一个标志允许对文件进行独占锁定。请参阅this以供参考。