2016-02-09 56 views
1

我需要多個線程來訪問這個heapq。所以我想確保使用heapq進行這樣的操作。python中的heapq線程安全嗎?

+0

您必須像@ martijn-pieters所說的那樣進行鎖定 - 但您不妨使用PriorityQueue而不是重新接線heapq。 https://docs.python.org/2/library/queue.html – jsbueno

回答

1

不,使用heapq庫不是線程安全的。使用鎖來協調訪問。

請注意,library documentation鏈接到source code;你總是可以自己看看它的行爲。您會看到該模塊在常規Python list上運行,並且沒有鎖定代碼。

如果你想要的只是一個優先級隊列,那麼看看沒有比Queue.PriorityQueue() class更多(在Python 3中重命名爲queue.PriorityQueue)。它完全是線程安全的。