python的多处理队列文档:https://docs.python.org/2/library/multiprocessing.html#multiprocessing.Queue
并不像queue.Queue那样清楚:https://docs.python.org/3/library/queue.html
关于队列的大小是否为"无限" (当在没有给出构造函数的maxsize参数时,在程序可以设法分配内存的可能范围内)。
是这样的吗?
答案 0 :(得分:4)
multiprocessing.Queue
完全模仿queue.Queue
所有功能(.task_done()
和.join()
除外)
Queue实现了Queue.Queue的所有方法,但task_done()和join()除外。
因此,如果没有参数(或负数),它可以采用无限元素
(作为旁注,因为队列在内部列出了类似结构(dequeue
,heapq
,list
),因此更难获得限制,然后没有限制。 )
编辑:
好的,因为在查看源代码后结果是,如果没有指定值,multiprocessing.Queue
确实有一个标准上限:2 ** 31-1
# file multiprocessing/queues.py class Queue(object): def __init__(self, maxsize=0, *, ctx): if maxsize <= 0: from .synchronize import SEM_VALUE_MAX as maxsize # -> 2**31-1
所以它不是infinte,而是praticly infinte