所以我有Queue.Queue()
我有很多生产者将工作放入Queue.Queue()和一群从队列中弹出的消费者
1)是否有利于限制队列大小而不是这样做? 2)没有限制尺寸,它真的没有任何尺寸限制吗?能永远长大吗?
我注意到当队列具有固定大小时,死锁似乎更多发生了
答案 0 :(得分:0)
如果你没有限制大小,select cast(barcode as decimal(38, 0))
可以增长,直到你的内存不足为止。所以Python没有规定大小限制,但你的机器仍然拥有有限的资源。
在某些应用程序(可能是大多数)中,程序员知道由于应用程序的特定特性,内存消耗不会成为问题。
但是,例如,如果您的生产者能够永远运行,而且消费者的生产速度比生产者慢得多,那么限制这种规模对于避免无限制的内存需求至关重要。
至于死锁,无论Queue
的大小是否有界,Queue
的实施都不太可能造成死锁;死锁更可能是由于应用程序代码中的缺陷造成的。例如,描绘通过网络获取内容的生产者,并在网络连接中断时错误地抑制错误。然后生产者可能无法生成任何新项目,因此消费者最终将永远阻止等待Queue
上显示的新内容。那"看起来像"死锁,但原因实际上与Queue
无关。