Является ли многопроцессорная очередь Python "бесконечной" по умолчанию? - PullRequest
0 голосов
/ 10 мая 2018

Документация для многопроцессорной очереди Python: https://docs.python.org/2/library/multiprocessing.html#multiprocessing.Queue

Не так ясно, как для очереди. Очередь: https://docs.python.org/3/library/queue.html

Относительно того, является ли размер очереди "бесконечным" (например, в пределах возможных границ того, что программа может распределить в памяти), когда аргумент maxsize не передается конструктору.

Так ли это?

1 Ответ

0 голосов
/ 10 мая 2018

multiprocessing.Queue имитирует queue.Queue полностью со всеми функциями (кроме .task_done() и .join())

Queue реализует все методы Queue.Queue, за исключением task_done () и join ().

Так что без аргументов (или отрицательного числа) он может принимать бесконечные элементы

(как примечание, поскольку очереди внутренне перечислены как структуры (dequeue, heapq, list), труднее иметь ограничение, чем не иметь ограничения.)

Edit:

Хорошо, как выясняется после просмотра исходного кода, получается, что 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, но практически infinte

...