2014-03-31 59 views
3

我正在使用Python threading庫。正常工作(當然,全球解釋器鎖受制於此)。python:等待多個對象(隊列,鎖,條件等)

現在我有一個房源。我有兩個單獨的併發來源:兩個Queue,或一個隊列和一個Condition如何等待準備好的第一個?(它們必須是單獨的對象,因爲它們屬於我的應用程序的不同模塊化部分。)

Windows具有WaitForMultipleObjects函數;有沒有類似的Python的併發原語?

回答

0

我不知道你已經存在的功能。然而有threading.enumaerate()我認爲只是可能返回一個列表關閉所有當前守護進程線程無論來源。一旦你有了這個列表,你可以遍歷它,尋找你想要的條件。要將線程設置爲守護進程,每個線程都有一個方法,可以在線程啓動之前調用像thread.setDaemon(True)的方法。

我不能肯定地說這是你的答案。我沒有那麼明顯的經驗,但是我在一本書中查看了這本書,例如Doug Hellmann的Python標準庫。他在關於線程化和枚舉化的部分有23個頁面來管理併發操作,這些都是有用的。

0

您可以創建一個新的同步對象(隊列,條件等),我們稱它爲ready_event,併爲每個要觀看的同步對象創建一個線程。每個線程都等待其同步對象準備好,當一個線程的同步對象準備就緒時,線程通過ready_event發出信號。在創建並啓動線程之後,您可以等待ready_event。