python:queue.queue()设置大小的最佳做法?

时间:2016-09-24 16:11:31

标签: python multithreading queue

所以我有Queue.Queue()

我有很多生产者将工作放入Queue.Queue()和一群从队列中弹出的消费者

1)是否有利于限制队列大小而不是这样做? 2)没有限制尺寸,它真的没有任何尺寸限制吗?能永远长大吗?

我注意到当队列具有固定大小时,死锁似乎更多发生了

1 个答案:

答案 0 :(得分:0)

如果你没有限制大小,select cast(barcode as decimal(38, 0)) 可以增长,直到你的内存不足为止。所以Python没有规定大小限制,但你的机器仍然拥有有限的资源。

在某些应用程序(可能是大多数)中,程序员知道由于应用程序的特定特性,内存消耗不会成为问题。

但是,例如,如果您的生产者能够永远运行,而且消费者的生产速度比生产者慢得多,那么限制这种规模对于避免无限制的内存需求至关重要。

至于死锁,无论Queue的大小是否有界,Queue的实施都不太可能造成死锁;死锁更可能是由于应用程序代码中的缺陷造成的。例如,描绘通过网络获取内容的生产者,并在网络连接中断时错误地抑制错误。然后生产者可能无法生成任何新项目,因此消费者最终将永远阻止等待Queue上显示的新内容。那"看起来像"死锁,但原因实际上与Queue无关。