国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 詳解python實現線程安全的單例模式

詳解python實現線程安全的單例模式

2021-01-19 09:13熔遁丶螺旋手里劍 Python

這篇文章主要介紹了python實現線程安全的單例模式,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

單例模式是一種常見的設計模式,該模式的主要目的是確保某一個類只有一個實例存在。當你希望在整個系統中,某個類只能出現一個實例時,單例對象就能派上用場。

比如,服務器的配置信息寫在一個文件中online.conf中,客戶端通過一個 Config 的類來讀取配置文件的內容。如果在程序運行期間,有很多地方都需要使用配置文件的內容,那么每個調用配置文件的地方都會創建 Config的實例,這就導致系統中存在多個Config 的實例對象,在配置文件內容很多的情況下,我們就浪費了大量的內存做了同樣的事。事實上,對于Config類我們在程序運行期間時只需要一個實例對象即可,這時單例模式就是最好的選擇。

python的模塊就是天然的單例模式,這里我們使用修飾器來實現單例模式,以下是代碼實現

?
1
2
3
4
5
6
7
8
9
def Singleton(cls):
 instances = {}
 
 def get_instance(*args, **kw):
  if cls not in instances:
   instances[cls] = cls(*args, **kw)
  return instances[cls]
 
 return get_instance

代碼也很簡單,將類傳入單例修飾器中,如果該類還未生成實例(instances中不存在該類),那么就生成一個新的實例返回,并記錄在instances中。如果已經instances中已經存在該類,那么直接返回實例instances[cls]。

那么這段代碼是完美的嗎?答案是否定的,這段代碼不是線程安全的。要實現線程安全需要配合鎖的使用,只有占有鎖的線程才能繼續訪問單例實例,看來我們需要再寫一個修飾器來實現線程安全了,以下是完整的代碼實現和簡單的多線程測試用例。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/python
# -*- coding: utf-8 -*-
import threading
 
def synchronized(func):
 func.__lock__ = threading.Lock()
 
 def synced_func(*args, **kws):
  with func.__lock__:
   return func(*args, **kws)
 
 return synced_func
 
def Singleton(cls):
 instances = {}
 
 @synchronized
 def get_instance(*args, **kw):
  if cls not in instances:
   instances[cls] = cls(*args, **kw)
  return instances[cls]
 
 return get_instance
 
def worker():
 single_test = test()
 print "id----> %s" % id(single_test)
 
@Singleton
class test():
 a = 1
if __name__ == "__main__":
 task_list = []
 for one in range(30):
  t = threading.Thread(target=worker)
  task_list.append(t)
 for one in task_list:
  one.start()
 for one in task_list:
  one.join()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/baiyb/p/8506438.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 免费一区 | 免费视频一区 | 国产中文字幕在线 | 羞羞视频在线免费 | 国内外成人激情免费视频 | 激情综合网激情 | 欧美日韩不卡视频 | 日韩一区二区三区在线观看 | 精品久久av | 久久久精品 | 国产精品亚洲视频 | 欧美日韩一区二区电影 | 久综合网 | 免费视频一区二区 | 精品久久久久久久 | 成人av专区 | 国产视频1区 | 日韩福利影院 | 精品伊人 | 黄色在线| 一区二区不卡视频 | 国产免费久久 | 91精品国产色综合久久 | 亚洲成人av在线播放 | 久久国产精品久久久久久久久久 | www中文字幕在线观看 | 成人深夜免费视频 | 欧美一级免费 | 黄视频日本| 成人做爰69片免费 | 亚洲综合自拍 | 亚洲成av人片在线观看无码 | 欧美综合第一页 | 国产91久久久久蜜臀青青天草二 | 涩涩视频在线看 | 欧美a在线 | 91国内外精品自在线播放 | 免费一区二区 | 国产精品久久久久久久久久久久久久 | 在线国产小视频 | 日本一区二区不卡 |