Я ищу решение, чтобы избежать deepcopy() в моей задаче с помощью Python.Избегайте deepcopy() в Python при смене словаря
Я реализую анализатор статистической зависимости, используя алгоритм chu-liu-edmonds. У меня есть график, представленный как словарь с каждым головным узлом, хранящимся в виде ключа, причем каждый из них имеет список, содержащий один или несколько объектов дуги класса в качестве значения.
В алгоритме cle, мне нужно изменить график (сжимать цикл). Это означает, что мне нужно удалить объекты дуги и головы и добавить другие, в то время как позже мне понадобится исходный граф для расширения этих сокращенных циклов. Прямо сейчас, я достигаю этого, глубоко копируя исходный граф и передавая его в контрактную функцию.
Теперь я запускал свою программу с помощью cProfile и выяснил, что все, что связано с deepcopy, на сегодняшний день является частью алгоритма, который занимает больше всего времени.
Так что мой вопрос: есть ли способ избежать/уменьшить это в моей ситуации?
Если изменения, которые вы делаете во время сокращения, должны быть выполнены на месте, и вы должны сохранить исходный график, я не думаю, что можно предотвратить необходимость в копировании второй копии графика, загрузив его дважды начать или сделать глубокую копию. Возможно ли построить сокращенный график в виде нового графика при прохождении процесса или в противном случае хранить информацию, необходимую для преобразования, если это необходимо, вместо того, чтобы фактически хранить сжатый граф? – dmargol1
Как я думаю об этом, это может быть лучший способ попытаться построить новый, а не копировать старый и изменить его. Это на самом деле никогда не происходило со мной. Благодаря! –