Я пытаюсь использовать набор Python в качестве фильтра для идентификаторов из таблицы MySQL. Набор python хранит все идентификаторы для фильтрации (около 30 000 прямо сейчас), это число будет медленно расти со временем, и меня беспокоит максимальная емкость набора python. Есть ли ограничение на количество элементов, которые оно может содержать?

1
Asimov4 29 Янв 2013 в 11:31

2 ответа

Лучший ответ

Ваше самое большое ограничение - это объем памяти на вашем компьютере. Попробуйте строку:

s = set(xrange(10000000))

Это создает набор длиной 10 миллионов, намного больше, чем 30 000, которые вы приводите в качестве примера. На моем компьютере (Macbook Air с 4 ГБ памяти) это выполняется всего за несколько секунд. Какой бы ни была ваша система, вероятно, вы будете так же без ограничений.

Конечно, существует абсолютно верхний предел, и задолго до этого ваш набор начнет замедляться из-за количества коллизий, а также из-за необходимого обмена памяти. Таким образом, имеет значение, насколько большим будет этот набор. Если вы будете работать с более чем 10 миллионами элементов, вы можете вместо этого рассмотреть возможность работы с базами данных.

7
David Robinson 29 Янв 2013 в 07:37

Я не знаю, существует ли произвольное ограничение на количество предметов в наборе. Скорее всего, ограничение связано с доступной памятью.

0
MaestroFJP 29 Янв 2013 в 07:34