code: def notifyObservers(self, arg=None):
          '''If 'changed' indicates that this object
          has changed, notify all its observers, then
          call clearChanged(). Each observer has its
          update() called with two arguments: this
          observable object and the generic 'arg'.'''
  
          self.mutex.acquire()
          try:
              if not self.changed:
                      return
              # Make a local copy in case of synchronous
              # additions of observers:
              localArray = self.obs[:]
              self.clearChanged()
          finally:
              self.mutex.release()
          # Update observers
          for observer in localArray:
              observer.update(self, argf notifyObservers(self, arg=None):
          '''If 'changed' indicates that this object
          has changed, notify all its observers, then
          call clearChanged(). Each observer has its
          update() called with two arguments: this
          observable object and the generic 'arg'.'''
  
          self.mutex.acquire()
          try:
              if not self.changed:
                      return
              # Make a local copy in case of synchronous
              # additions of observers:
              localArray = self.obs[:]
              self.clearChanged()
          finally:
              self.mutex.release()
          # Update observers
          for observer in localArray:
              observer.update(self, arg)
docs: If 'changed' indicates that this object
          has changed, notify all its observers, then
          call clearChanged(). Each observer has its
          update() called with two arguments: this
          observable object and the generic 'arg'.