2016-02-09 57 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)。它完全是线程安全的。