Implementing Barrier in Python2.7

前端 未结 1 1980
情深已故
情深已故 2021-01-21 00:01

I have this code implemented in Python3 using Barriers. I want to get the same functionality in Python2.7 but i don\'t know which synchronization primitive to use as Barriers ar

相关标签:
1条回答
  • 2021-01-21 00:55

    You can simulate the barrier with semaphores. Take a look at: Implementing an N process barrier using semaphores

    The problem is that it has no timeout parameter, maybe using Conditions ...

    import time
    from threading import Thread,Semaphore
    
    class Barrier:
        def __init__(self, n):
            self.n = n
            self.count = 0
            self.mutex = Semaphore(1)
            self.barrier = Semaphore(0)
    
        def wait(self):
            self.mutex.acquire()
            self.count = self.count + 1
            self.mutex.release()
            if self.count == self.n: self.barrier.release()
            self.barrier.acquire()
            self.barrier.release()
    
    b = Barrier(2)
    
    def func1():
        time.sleep(3)
        #
        b.wait()
        #
        print('Working from func1')
        return 
    
    def func2():
        time.sleep(5)
        #
        b.wait()
        #
        print('Working from func2')
        return    
    
    if __name__ == '__main__':
        Thread(target = func1).start()
        Thread(target = func2).start()    
    
    0 讨论(0)
提交回复
热议问题