PythonºÍSingleton £¨µ¥¼þ£©Ä£Ê½
ÎÒÖªµÀµÄÒ»ÖÖÔÚ
python
ÖÐ
Singleton mode
µÄʵÏÖÈçÏ£º
class Foo: pass
def
instance():
global inst
try:
inst
except:
inst =
Foo
()
return inst
¸ÃʵÏÖµÄÓŵã¾ÍÊǼòµ¥ºÍÖ±¹Û£¬µ«È±µãҲͬÑùÃ÷ÏÔ£º
ÐèÒª¿Í»§´úÂëÏÔʽ֪µÀÒ»¸ö½Ð
instance()
µÄ·½·¨À´´´½¨¸ÃÀàµÄ¶ÔÏó£»
ÔÚ²¢·¢»·¾³ÏÂÕâÖÖʵÏÖ²¢²»¿É¿¿£»
µÚ
2
µãÊÇÏ൱ÑÏÖØµÄÒ»¸öȱÏÝ£¬Èç¹ûÄãÓÃÁËÉÏÃæµÄ´úÂ룬ÄÇÖ»ÄÜÆíµ»²»ÒªÓÐ
1
¸öÒÔÉϵÄʵÀý³öÏÖ£¨ËäÈ»¼¸Âʽϵͣ¬µ«»¹ÊÇÓпÉÄÜ£©£¬·ñÔò¾Í»á³öÏÖÏ¡Ææ¹Å¹ÖµÄÎÊÌâ¡£
Ò»¸öÉÔ΢ºÃЩʵÏÖÈçÏ£º
class
Singleton(object):
objs
= {}
def __new__(cls, *args, **kv):
if cls in cls.objs:
return cls.objs[cls]
cls.objs[cls] = object.__new__(cls)
Õâ¸öʵÏÖ½â¾öÁ˵ÚÒ»¸öȱµã£¬ÄÇЩֻÐèÒªÒ»¸öʵÀýµÄÀàÏëʵÏÖ
Singleton mode
£¬Ö»Òª´Ó
Singleton
Àà¼Ì³Ð¼´¿É£¬ÎÞÂÛÔÚ´úÂëµÄÄÄÀïʵÀý»¯¸ÃÀ࣬¶¼Ö»´æÔÚ¸ÃÀàµÄÒ»¸öʵÀý¡£
ΪÁ˽â¾öµÚ
2
¸öȱµã£¬Ò»¸ö½ø»¯µÄ°æ±¾³öÏÖÁË£¬ÈçÏ£º
class
Singleton(object):
objs
= {}
objs_locker =
threading.Lock()
def __new__(cls, *args, **kv):
if cls in cls.objs:
return cls.objs[cls]
cls.objs_locker.acquire()
try:
if cls in cls.objs: ## double check
locking
return cls.objs[cls]
&nb
Ïà¹ØÎĵµ£º
Python ×Öµä
×ÖµäÀàËÆÓÚÄãͨ¹ýÁªÏµÈËÃû×Ö²éÕÒµØÖ·ºÍÁªÏµÈËÏêϸÇé¿öµÄµØÖ·²¾£¬¼´£¬ÎÒÃǰѼü£¨Ãû×Ö£©ºÍÖµ£¨ÏêϸÇé¿ö£©ÁªÏµÔÚÒ»Æð¡£×¢Ò⣬¼ü±ØÐëÊÇΨһµÄ£¬¾ÍÏñÈç¹ûÓÐÁ½¸öÈËÇ¡ÇÉͬÃûµÄ»°£¬ÄãÎÞ·¨ÕÒµ½ÕýÈ·µÄÐÅÏ¢¡£
×¢Ò⣬ÄãÖ»ÄÜʹÓò»¿É±äµÄ¶ÔÏ󣨱ÈÈç×Ö·û´®£©À´×÷Ϊ×ÖµäµÄ¼ü£¬µ«ÊÇÄã¿ÉÒÔ²»¿É±ä»ò¿É±äµÄ¶ÔÏó×÷Ϊ×Öµäµ ......
Python Ôª×é
Ôª×éºÍÁбíÊ®·ÖÀàËÆ£¬Ö»²»¹ýÔª×éºÍ×Ö·û´®Ò»ÑùÊÇ ²»¿É±äµÄ ¼´Äã²»ÄÜÐÞ¸ÄÔª×é¡£Ôª×éͨ¹ýÔ²À¨ºÅÖÐÓöººÅ·Ö¸îµÄÏîÄ¿¶¨Òå¡£Ôª×éͨ³£ÓÃÔÚʹÓï¾ä»òÓû§¶¨ÒåµÄº¯ÊýÄܹ»°²È«µØ²ÉÓÃÒ»×éÖµµÄʱºò£¬¼´±»Ê¹ÓõÄÔª×éµÄÖµ²»»á¸Ä±ä¡£
ʹÓÃÔª×é
Àý9.2 ʹÓÃÔª×é
#!/usr/bin/python
# Filename: using_tuple.py
zoo = ('wo ......
Python ÓÃÏ»®Ïß×÷Ϊ±äÁ¿Ç°×ººÍºó׺ָ¶¨ÌØÊâ±äÁ¿¡£
_xxx
²»ÄÜÓÃ'from module import *'µ¼Èë
__xxx__ ϵͳ¶¨ÒåÃû×Ö
__xxx
ÀàÖеÄ˽ÓбäÁ¿Ãû
ºËÐÄ·ç¸ñ£º±ÜÃâÓÃÏ»®Ïß×÷Ϊ±äÁ¿ÃûµÄ¿ªÊ¼¡£
ÒòΪÏ»®Ïß¶Ô½âÊÍÆ÷ÓÐÌØÊâµÄÒâÒ壬¶øÇÒÊÇÄÚ½¨±êʶ·ûËùʹÓõķûºÅ£¬ÎÒÃǽ¨Òé³ÌÐò ......
±ê׼ͷ²¿
#!/usr/bin/python
±àÂë
ËùÓÐµÄ Python ½Å±¾Îļþ¶¼Ó¦ÔÚÎļþÍ·±êÉÏ #-*- coding:utf8 -*- ¡£ÉèÖÃ±à¼Æ÷£¬Ä¬Èϱ£´æÎª utf8 ¸ñʽ¡£
mainº¯Êý
Ó¦ÓóÌÐòÒª¶¨Òåmainº¯Êý¶ø²»ÒªÖ±½Óд½Å±¾
def main():
dosomething()
if
__name__ == "__main__"
:
main()
Èç¹ûÊÇÈ«¾Ö±äÁ¿£¬ÔòÐèÒªÏÔʽ¼ÓÉ ......
Áбí
listÊÇ´¦ÀíÒ»×éÓÐÐòÏîÄ¿µÄÊý¾Ý½á¹¹£¬¼´Äã¿ÉÒÔÔÚÒ»¸öÁбíÖд洢һ¸ö ÐòÁÐ
µÄÏîÄ¿¡£¼ÙÏëÄãÓÐÒ»¸ö¹ºÎïÁÐ±í£¬ÉÏÃæ¼ÇÔØ×ÅÄãÒªÂòµÄ¶«Î÷£¬Äã¾ÍÈÝÒ×Àí½âÁбíÁË¡£Ö»²»¹ýÔÚÄãµÄ¹ºÎï±íÉÏ£¬¿ÉÄÜÿÑù¶«Î÷¶¼¶À×ÔÕ¼ÓÐÒ»ÐУ¬¶øÔÚPythonÖУ¬
ÄãÔÚÿ¸öÏîĿ֮¼äÓöººÅ·Ö¸î¡£
ÁбíÖеÄÏîĿӦ¸Ã°üÀ¨ÔÚ·½À¨ºÅÖУ¬ÕâÑùPython¾ÍÖªµÀÄãÊÇ ......