python 利用檔案鎖單例執行指令碼

2021-07-14 10:43:20 字數 664 閱讀 7111

你可能會遇到這樣的要求,乙個指令碼,只允許有乙個例項。

在python中,為了實現這個需求,可以引入fcntl模組對檔案加乙個排他鎖,這樣一來,先啟動的例項擁有了檔案鎖,而後啟動的例項則因無法獲取鎖而退出

#coding=utf-8

import fcntl, sys, time, os

pidfile = 0

global pidfile

pidfile = open(os.path.realpath(__file__), "r")

try:

fcntl.flock(pidfile, fcntl.lock_ex | fcntl.lock_nb) #建立乙個排他鎖,並且所被鎖住其他程序不會阻塞

except:

print "another instance is running..."

sys.exit(1)

if __name__ == "__main__":

while true:

print 'running...'

time.sleep(1)

需要注意的是,fcntl模組只能在linux環境下使用,windows上是沒有的,這再次警告我們,擁抱linux,遠離windows

python 單例 Python單例

01.單例設計模式 設計模式 設計模式 是 前人工作的總結和提煉,通常,被人們廣泛流傳的設計模式都是針對 某一特定問題 的成熟的解決方案 使用 設計模式 是為了可重用 讓 更容易被他人理解 保證 可靠性 單例設計模式 目的 讓 類 建立的物件,在系統中 只有 唯一的乙個例項 每一次執行 類名 返回的...

python利用模組實現單例模式

單例是最常使用的模式,通過單例模式可以保證系統中乙個類只有乙個例項而且該例項易於被外界訪問,從而方便對例項個數的控制並節約系統資源。python實現單例模式一般可以對建立例項的方法 new 進行改造 class singleton object instance none def new cls,a...

單例雙重校驗鎖

public class singledoublelock 1 第一次校驗 因為該類是單例的只建立一次,大部分時間single都不為空,所以不會進行第一次檢驗的 塊內部,從而提高效率 2 第二次校驗 如果single為空,執行緒t1,t2進入第一次檢驗的 塊,t1執行synchronized 塊 n...