Python 中的 heapq 线程安全吗?

der*_*rek 5 python thread-safety

我需要多个线程来访问这个堆。所以我想确保使用 heapq 进行此类操作。

Mar*_*ers 3

不,使用该heapq库不是线程安全的。使用锁来协调访问。

请注意,库文档链接到源代码;您可以随时亲自查看一下它的行为方式。您将看到该模块在常规 Python 上运行list,并且没有锁定代码。

如果您想要的只是一个优先级队列,那么Queue.PriorityQueue()queue.PriorityQueue在 Python 3 中重命名为)就是您的最佳选择。它是完全线程安全的。