Python實(shí)現(xiàn)腳本鎖功能(同時(shí)只能執(zhí)行一個(gè)腳本)
1. 文件鎖
腳本啟動(dòng)前檢查特定文件是否存在,不存在就啟動(dòng)并新建文件,腳本結(jié)束后刪掉特定文件。
通過(guò)文件的判斷來(lái)確定腳本是否正在執(zhí)行。
方法實(shí)現(xiàn)也比較簡(jiǎn)單,這里以python腳本為例
#coding=utf-8 # # 文件鎖腳本測(cè)試 # import os #操作系統(tǒng) import time lockfilepath = "/opt/lock.txt"; #判斷文件是否存在 if os.path.exists(lockfilepath): #文件存在,說(shuō)明腳本正在執(zhí)行 print("腳本正在執(zhí)行") else: #文件不存在,創(chuàng)建文件,并執(zhí)行任務(wù)。 lockfile = open(lockfilepath,"w+"); print ("文件鎖 任務(wù)模擬sleep 10s"); time.sleep(10); print ("任務(wù)模擬結(jié)束 sleep over "); #刪除文件 os.remove(lockfilepath);
文件鎖測(cè)試結(jié)果
2.端口占用
使用socket模塊,在腳本執(zhí)行時(shí),給系統(tǒng)中增加一個(gè)端口,在腳本執(zhí)行完后釋放。
腳本執(zhí)行時(shí),去創(chuàng)建這個(gè)端口,如果腳本還在執(zhí)行,端口會(huì)創(chuàng)建失敗,提示腳本還在執(zhí)行。
實(shí)現(xiàn)方法也比較簡(jiǎn)單:Python腳本
#coding=utf-8 import time import socket suo = 1 try: global hyf_suo hyf_suo = socket.socket() addr = ('',98889) hyf_suo.bind(addr); suo = 1; except: suo = 2; print('already has an instance') if(suo==1): print ("鎖住 sleep "); time.sleep(10); print ("sleep over "); else: print("已經(jīng)加鎖了");
端口鎖測(cè)試結(jié)果
結(jié)論
以上兩種方法都能實(shí)現(xiàn)腳本鎖的功能,個(gè)人更傾向于使用第二種方法。端口鎖的方法。
以上所述是小編給大家介紹的Python實(shí)現(xiàn)腳本鎖功能(同時(shí)只能執(zhí)行一個(gè)腳本),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Python實(shí)現(xiàn)定時(shí)任務(wù)的九種方案總結(jié)
定時(shí)任務(wù)是編程中常見(jiàn)的需求,它可以按照預(yù)定的時(shí)間表執(zhí)行特定的任務(wù)或操作,在Python中,有多種方法可以實(shí)現(xiàn)定時(shí)任務(wù),下面小編就來(lái)和大家詳細(xì)講講吧2023-11-11Pandas中的 transform()結(jié)合 groupby()用法示例詳解
這篇文章主要介紹了Pandas中的 transform() 結(jié)合 groupby() 用法示例,本文通過(guò)一個(gè)餐廳數(shù)據(jù)集給大家分享解決方案,示例代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-09-09Python編寫(xiě)一個(gè)趣味問(wèn)答小游戲
隨著六一兒童節(jié)的到來(lái),我們可以為孩子們編寫(xiě)一個(gè)有趣的小游戲,讓他們?cè)谟螒蛑袑W(xué)習(xí)有關(guān)六一兒童節(jié)的知識(shí)。本文將介紹如何用Python編寫(xiě)一個(gè)六一兒童節(jié)問(wèn)答小游戲及趣味比賽,需要的可以參考一下2023-06-06使用python將多個(gè)excel文件合并到同一個(gè)文件的方法
這篇文章主要介紹了使用python將多個(gè)excel文件合并到同一個(gè)文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07python3.8中關(guān)于sklearn問(wèn)題(win10)
這篇文章主要介紹了python3.8中關(guān)于sklearn問(wèn)題(win10),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06Python中如何使用if語(yǔ)句處理列表實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于在Python中如何使用if語(yǔ)句處理列表的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02用python代碼將tiff圖片存儲(chǔ)到j(luò)pg的方法
今天小編就為大家分享一篇用python代碼將tiff圖片存儲(chǔ)到j(luò)pg的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12python腳本設(shè)置系統(tǒng)時(shí)間的兩種方法
這篇文章主要介紹了python腳本設(shè)置系統(tǒng)時(shí)間的兩種方法,其一是調(diào)用socket直接發(fā)送udp包到國(guó)家授時(shí)中心,其二是調(diào)用ntplib包,感興趣的小伙伴們可以參考一下2016-02-02