1
我需要多个线程来访问这个heapq。所以我想确保使用heapq进行这样的操作。python中的heapq线程安全吗?
我需要多个线程来访问这个heapq。所以我想确保使用heapq进行这样的操作。python中的heapq线程安全吗?
不,使用heapq
库不是线程安全的。使用锁来协调访问。
请注意,library documentation链接到source code;你总是可以自己看看它的行为。您会看到该模块在常规Python list
上运行,并且没有锁定代码。
如果你想要的只是一个优先级队列,那么看看没有比Queue.PriorityQueue()
class更多(在Python 3中重命名为queue.PriorityQueue
)。它完全是线程安全的。
您必须像@ martijn-pieters所说的那样进行锁定 - 但您不妨使用PriorityQueue而不是重新接线heapq。 https://docs.python.org/2/library/queue.html – jsbueno