中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Python中使用functools實現注解同步

發布時間:2021-03-29 16:49:57 來源:億速云 閱讀:114 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關怎么在Python中使用functools實現注解同步,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

首先要求自己的類中有一個鎖對象并且在類初始化的時候初始化這個鎖對象,比如:

class MyWorker(object):
  def __init__(self):
    self.lock = threading.Lock()
    ...
  ...

然后創建一個 synchronized 函數,這個函數裝飾具體對象的具體方法,將方法放到獲取/釋放鎖之間來運行,如下

def synchronized(func):
  @functools.wraps(func)
  def wrapper(self, *args, **kwargs):
    with self.lock:
      return func(self, *args, **kwargs)
  return wrapper

最后在需要使用同步的方法上使用 @synchronized 來標準方法是同步方法,比如:

@synchronized
def test(self):
  ...

下面是一個完整例子,僅供參考:

import threading
import functools
import time
def synchronized(func):
  @functools.wraps(func)
  def wrapper(self, *args, **kwargs):
    with self.lock:
      return func(self, *args, **kwargs)
  return wrapper
class MyWorker(object):
  def __init__(self):
    self.lock = threading.Lock()
    self.idx = 0
  @synchronized
  def test1(self):
    for i in range(1, 11):
      self.idx = self.idx + 1
      print "Test1: " + str(self.idx)
      time.sleep(1)
  @synchronized
  def test2(self):
    for i in range(1, 11):
      self.idx = self.idx + 1
      print "Test2: " + str(self.idx)
      time.sleep(1)
  @synchronized
  def test3(self):
    for i in range(1, 11):
      self.idx = self.idx + 1
      print "Test3: " + str(self.idx)
      time.sleep(1)
worker = MyWorker()
threading.Thread(target=worker.test1).start()
threading.Thread(target=worker.test2).start()
threading.Thread(target=worker.test3).start()

看完上述內容,你們對怎么在Python中使用functools實現注解同步有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

改则县| 鹤岗市| 启东市| 达孜县| 日喀则市| 屏南县| 嘉定区| 旬邑县| 平果县| 苗栗县| 永春县| 屏东市| 四平市| 大埔县| 嘉义县| 寿阳县| 南京市| 华容县| 九寨沟县| 青海省| 太保市| 屯留县| 应用必备| 长海县| 石河子市| 宣武区| 兴义市| 江津市| 新密市| 开鲁县| 罗甸县| 怀远县| 沿河| 建宁县| 临泽县| 三亚市| 德化县| 买车| 宜丰县| 玛纳斯县| 黄石市|