所以我有Queue.Queue()
我有一群生产者将作业放到Queue.Queue()中,还有一群消费者从队列中弹出
1)限制队列大小与不设置队列大小是否有好处?
2)不封顶大小,真的没有大小限制吗?可以永远增长吗?
我注意到,当队列大小固定时,死锁似乎更容易发生
发布于 2016-09-25 00:28:10
如果不设置大小上限,Queue可能会一直增长,直到内存耗尽。所以Python没有施加大小限制,但是您的机器仍然具有有限的资源。
在一些应用程序中(可能大多数),程序员知道内存消耗不会成为问题,因为它们的应用程序具有特定的特性。
但是,例如,如果你有“永远运行”的生产者,而消费者的运行速度比生产者慢得多,那么限制大小对于避免无限的内存需求至关重要。
至于死锁,不管Queue的大小是否有界,Queue的实现都不太可能导致死锁;死锁更有可能是由于应用程序代码中的缺陷造成的。例如,想象一个生产者通过网络获取东西,并在网络连接中断时错误地抑制错误。然后生产者可能无法产生任何新的项,因此消费者最终将永远阻塞,等待新的东西出现在Queue上。这看起来像是死锁,但原因实际上与Queue无关。
https://stackoverflow.com/questions/39678374
复制相似问题