亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12
最近訪問板塊 發(fā)新帖
樓主: zhuyubei
打印 上一主題 下一主題

非多線程環(huán)境下,如何鎖住dict [復(fù)制鏈接]

論壇徽章:
2
CU大;照
日期:2013-04-17 11:46:28CU大;照
日期:2013-04-17 11:46:39
11 [報告]
發(fā)表于 2012-08-17 15:38 |只看該作者
本帖最后由 cdtits 于 2012-08-17 16:41 編輯

回復(fù) 9# Hadron74
  1. class myUserDict(UserDict):

  2.     def __init__(self, dict = None, lock = False, **kwarg):
  3.         self._lock = lock
  4.         self._error = False
  5.         UserDict.__init__(self, dict, **kwarg)

  6.     def lockit(self):
  7.         self._lock = True

  8.     def unlockit(self):
  9.         self._lock = False

  10.     def _isUnlocked(self):
  11.         if self._lock:
  12.             if self._error:
  13.                 raise ValueError("The Dict is locked")
  14.             return False
  15.         return True

  16.     def __setitem__(self, key, item):
  17.         if self._isUnlocked():
  18.             return UserDict.__setitem__(self, key, item)
復(fù)制代碼

論壇徽章:
0
12 [報告]
發(fā)表于 2012-08-17 15:47 |只看該作者
回復(fù) 11# cdtits

再包裝一下,不錯。謝謝!
   

論壇徽章:
0
13 [報告]
發(fā)表于 2012-08-17 15:51 |只看該作者
回復(fù) 11# cdtits


    不錯啊。哈哈

論壇徽章:
0
14 [報告]
發(fā)表于 2012-08-18 10:27 |只看該作者
本帖最后由 106033177 于 2012-08-18 10:28 編輯

回復(fù) 13# zhuyubei
回復(fù) 11# cdtits
  1. class mydict(dict):
  2.     def __init__(self,**kwarg):
  3.         self._lock = False
  4.         dict.__init__(self,**kwarg)
  5.     @property
  6.     def islocked(self):
  7.         return self._lock
  8.     @islocked.setter
  9.     def islocked(self,value):
  10.         self._lock = value
  11.     def __setitem__(self, key, item):
  12.         if not self._lock :
  13.             return dict.__setitem__(self, key, item)
  14.         raise ValueError("dict is locked")
  15.    
  16. a = mydict(one=1,two=2)
  17. a['three'] = 3
  18. print a
  19. a.islocked=True
  20. a['four']=5
復(fù)制代碼

論壇徽章:
0
15 [報告]
發(fā)表于 2012-09-12 11:41 |只看該作者
回復(fù) 14# 106033177
回復(fù) 11# cdtits
回復(fù) 1# zhuyubei
剛學了函數(shù)修飾符的的使用,試著改寫了先前寫的程序,是精簡了一些,但是面向?qū)ο蟛惶,多了個全局函數(shù),讓高手看看,有什么建議。
  1. from UserDict import UserDict

  2. def public_lock(func):
  3.         def newfunc(self,*argv,**kwarg):
  4.                 if self.lock:
  5.                         raise ValueError("The Dict is locked")
  6.                 else:
  7.                         return func(self,*argv,**kwarg)
  8.         return newfunc

  9. class myUserDict(UserDict):
  10.         def __init__(self,dict=None,lock=False,**kwarg):
  11.                 self.lock = lock
  12.                 UserDict.__init__(self,dict,**kwarg)
  13.         def lockit(self):
  14.                 self.lock = True
  15.         def unlockit(self):
  16.                 self.lock =False

  17.         @public_lock
  18.         def __setitem__(self,key,item):
  19.                 return UserDict.__setitem__(self,key,item)

  20.         @public_lock
  21.         def __delitem__(self,key):
  22.                 return UserDict.__delitem__(self,key)

  23.         @public_lock
  24.         def update(self,dict=None,**kwarg):
  25.                 return UserDict.update(self,dict,**kwarg)

  26.         @public_lock
  27.         def setdefault(self,key,failobj=None):
  28.                 return UserDict.setdefault(self,key,failobj)

  29.         @public_lock
  30.         def pop(self,key,*args):
  31.                 return UserDict.pop(self,key,*args)

  32.         @public_lock
  33.         def popitem(self):
  34.                 return UserDict.popitem(self)

  35. if __name__ == '__main__':
  36.         a=myUserDict({1:1,2:2,3:3})
  37.         print a
  38.         a.lockit()
  39.         a[4] = 5
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP