作者MaR1nlolz (mumimumi)
看板Python
標題[問題] 限制某個function只能被叫到一次
時間Tue Mar 16 08:05:49 2021
最近遇到個問題,請問一下各位,
當執行python app.py時,不論MongoClient()被呼叫幾次,我希望create()只被呼叫一次
,
我目前的做法是透過global variable來判斷
create()是否被呼叫過,不過global variable用法幾乎都不太建議使用,
避免被其他地方改到,想請問各位有沒有比較好的做法,以下是我的程式碼,謝謝
--- mongo.py
instance = None
isInit = False
def create():
mogno = MongoClient('mongo://127.0.0.1:27017', maxPoolSize=10)
return mogno
def mongoClient():
global isInit, instance
if isInit == False:
instance = create()
isInit = True
--- app.py
import mongoClient
mongoClient()
mongoClient()
mongoClient()
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.0.115 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1615853151.A.F70.html
※ 編輯: MaR1nlolz (114.136.223.81 臺灣), 03/16/2021 08:34:54
推 sherees: singleton 03/16 10:11
→ zerof: 找找 framework 的 after_create hook 03/16 10:33
推 TitanEric: singleton映象中是物件只能被叫一次,請問function也 03/16 10:47
→ TitanEric: 可以嗎 03/16 10:47
→ TitanEric: 喔喔 沒事了 03/16 13:34
→ numpy: python-equivalent-of-static-variables-inside-a-function 03/17 09:30