作者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://webptt.com/cn.aspx?n=bbs/Python/M.1615853151.A.F70.html
※ 编辑: MaR1nlolz (114.136.223.81 台湾), 03/16/2021 08:34:54
1F:推 sherees: singleton 03/16 10:11
2F:→ zerof: 找找 framework 的 after_create hook 03/16 10:33
3F:推 TitanEric: singleton映象中是物件只能被叫一次,请问function也 03/16 10:47
4F:→ TitanEric: 可以吗 03/16 10:47
5F:→ TitanEric: 喔喔 没事了 03/16 13:34
7F:→ numpy: python-equivalent-of-static-variables-inside-a-function 03/17 09:30