2010-06-02 97 views
1

可能重複:
Python: single instance of program製作一個python腳本只能在同一時間運行一次

我希望做一個python腳本是在獨特之處在於它可以一次只能運行一次。例如,如果我運行腳本並第二次打開同一腳本的另一個會話,並且第一個會話仍在運行,那麼第二個會話將會退出並不執行任何操作。任何人都知道我可以如何實現這個?

+0

http://stackoverflow.com/questions/380870/ python-single-instance-of-program http://stackoverflow.com/questions/220525/ensuring-a-single-instance-of-an-application-in-linux http://stackoverflow.com/questions/1900979/如何避免 - 程序的多個實例 – 2010-06-02 16:19:56

+0

已經回答[這裏](http://stackoverflow.com/questions/380870/python-single-instance-of-program)。 – RSabet 2010-06-02 16:18:39

回答

0

一個窮人的解決方案是使用基於文件的鎖。如果您使用os.open()打開文件,則會有一個標誌允許對該文件進行排它鎖定。請參閱this以供參考。

1

從未寫過之前蟒蛇,但是這是我剛剛在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()