Tried to rewrite using Event() just as experiment, but unfortunately MainThread will blocking all others. Code below:
import threading class class1: def __init__(self): self.myEvent = threading.Event() result = doSomeJob() def increaseCounter(self): self.myEvent.set() doSomeJob(self): ##### BLOCKING HERE ### if not self.myEvent.isSet(): self.myEvent.wait() self.myEvent.clear() # ... continue... # this class subscribed to some observer which implements thread class monitor: def __init__(self, klass): #do some init self.c = klass def update(self): self.c.increaseCounter() if __name__ == "__main__": cl1 = class1() m = monitor(cl1) mo = MonitorObserver(m) Observer realized as described in Thinking in Python, Bruce Eckel http://mindview.net/Books/TIPython Does anybody have any idea? Any help will be appreciated. Thanks in advance to ALL! Best regards, /Gelios "Nodir Gulyamov" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Hi Bryan, > Thanks for your reply. > I tried to test your solution, but it doesn't work, hence > threading.Semaphore object hasn't method to get value of semaphore. > I looked to source code of semaphore.py and find out that value is private > variable. > > Best regards, > /Gelios > > "Bryan Olson" <[EMAIL PROTECTED]> wrote in message > news:[EMAIL PROTECTED] >>I wrote: >> > Make self.counter a semaphore. Untested code: >> >> A little clean-up. Still untested: >> >> import threading >> >> class class1: >> def __init__(self): >> self.counter = threading.semaphore(0) >> result = self.doSomeJob() >> >> def increaseCounter(self): >> self.counter.release() >> >> def doSomeJob(self): >> # Busy-waiting sucks. >> # while counter != 1: >> # pass >> self.counter.acquire() >> # ... continue... >> >> >> -- >> --Bryan > > -- http://mail.python.org/mailman/listinfo/python-list