Я очищаю код Python, который я написал, когда был ... не так хорошо осведомлен. В первую очередь я убиваю некоторые сложности, связанные с неполным пониманием потоков в Python. Мне нужно сделать список элементов потокобезопасными, и я хотел бы сделать это через неизменяемые списки, а не обычный подход к блокировке. Я знаю, что неизменяемые объекты очень специфичны в отношении потоковой обработки, потому что все проблемы безопасности потоков, связанные с неполными изменениями состояния, просто исчезают.Неизменность и безопасность потоков в Python
Итак, я спрашиваю: есть ли следующий код в потоковом режиме?
class ImmutableList(object):
def __init__(self):
self._list =()
def __iter__(self):
return self._list.__iter__()
def append(self, x):
self._list = self._list + tuple([x])
Я думаю, что это так, потому что новый список строится каждый раз. Если список обновляется, а другой поток выполняет итерацию через него, старый список будет продолжать использоваться для оставшейся части итерации. Это хорошо для меня, но может быть не для всех.
Кроме того, это хорошая идея? Я только хочу применить это к нескольким ситуациям, когда размер списка невелик, и списки не сильно меняются (ожидают прослушиватели событий).
Кстати, вы можете написать «кортеж ([х])», как «(х,)». –