Возможный дубликат:
Что делает python intern и когда он должен использоваться?
Я работаю с программой в python, которая должна коррелировать по массиву с миллионами строковых объектов. Я обнаружил, что если все они взяты из одной строки, каждая дополнительная "строка" является просто ссылкой на первую, основную строку. Однако, если строки считываются из файла, и если все строки равны, для каждого из них все еще требуется новое распределение памяти.
То есть, это занимает около 14 месяцев хранения:
a = ["foo" for a in range(0,1000000)]
Хотя для этого требуется более 65 миллионов хранения:
a = ["foo".replace("o","1") for a in range(0,1000000)]
Теперь я могу сделать память с меньшим объемом с этим:
s = {"f11":"f11"}
a = [s["foo".replace("o","1")] for a in range(0,1000000)]
Но это кажется глупым. Есть ли более простой способ сделать это?