Вопрос о производительности самодельного изменчивого строкового объекта в Python - PullRequest
0 голосов
/ 23 апреля 2019

Я создаю простой консольный текстовый скроллер Unix, и мой подход заключается в том, чтобы постоянно добавлять деку с ее максимальной шириной, установленной на ширину экрана.Каждый раз, когда я очищаю консоль и добавляю новый символ в deque, я соединяю ('' .join (deque)) содержимое deque в строку для печати на консоли.Я знаю, что каждый раз, когда я делаю это, я создаю новый объект.Текстовые файлы, которые я загружаю в скроллер, огромны, и мне интересно, не является ли постоянное создание строковых объектов таким образом неэффективным, когда речь идет о памяти.Я думал об использовании StringIO, но каждый раз, когда я вызываю getvalue (), он также создает новый объект.Кажется, что в любом случае я подошел к нему, печать на консоли создаст новый объект с уникальным идентификатором.Поэтому я создал простой класс MutableString.Используя метод str (), я могу печатать на консоль, и объект класса, кажется, имеет только два идентификатора, связанных с ним.Один для самого объекта класса и один для объекта, созданного при вызове print () str ().Мой вопрос: действительно ли этот подход более эффективен, чем вызов '' .join (deque), как я делал?Простой класс, который я создал, действительно изменчив и, следовательно, экономит ресурсы?Если нет, то каким может быть вычислительно недорогой способ добавления символов в строку?Спасибо за ваше время и внимание!

from collections import deque

class MutableString:

    def __init__(self, string):
        self.string = deque(string)


    def __repr__(self):
        return f'mutable_string.MutableString({self.__str__()})'


    def __str__(self):
        return ''.join(self.string)


    def __add__(self, other):
        self.string.append(other)
...