2012-04-19 141 views
11

所以,我會首先說這是一個家庭作業問題。我的教授給了我們一項任務,必須用Java寫一次,用另一種語言寫一次;我選擇第二種語言是Python,因爲我至少有一點熟悉它。該程序必須按以下方式工作:Python是否具有與Java的CountDownLatch類似的控制機制?

啓動我們將調用父級的主方法/線程。

啓動線程的孩子1從父

啓動線程孫子從線程孩子1

啓動線程的孩子2從父從孫子線程

打印孩子2

打印孫子從孩子2線程

打印孩子1從孩子1線程

從主要方法/父線程的父母打印

這些事情必須按此順序完成。我已經編寫了使用CountDownLatch在Java中執行此操作的代碼,以組織這些事情發生的方式。但是,我沒有在Python中看到類似的機制(儘管我對Python比Java不太熟悉)。有沒有類似的機制可能我找不到,因爲我不知道它叫什麼?

回答

0

查看threading模塊中的SemaphoreCondition類。

16

您可以使用threading.Condition這樣實現CountDownLatch:

import threading 

class CountDownLatch(object): 
    def __init__(self, count=1): 
     self.count = count 
     self.lock = threading.Condition() 

    def count_down(self): 
     self.lock.acquire() 
     self.count -= 1 
     if self.count <= 0: 
      self.lock.notifyAll() 
     self.lock.release() 

    def await(self): 
     self.lock.acquire() 
     while self.count > 0: 
      self.lock.wait() 
     self.lock.release() 
相關問題