wegwgwegПростое гугление по запрос Python list atomic operation первой же ссылкой ведет нас на
Stack Overflow, где дается ответ, а так же есть сылка на
эту заметку, где показаны какие операции являются потоко-безопасными, а какие нет. Вот пример оттуда:
For example, the following operations are all atomic (L, L1, L2 are lists, D, D1, D2 are dicts, x, y are objects, i, j are ints):
L.append(x)
L1.extend(L2)
x = L[i]
x = L.pop()
L1[i:j] = L2
L.sort()
x = y
x.field = y
D[x] = y
D1.update(D2)
D.keys()
These aren’t:
i = i+1
L.append(L[-1])
L[i] = L[j]
D[x] = D[x] + 1
Еще можете обратить внимание на класс collections.deque . Он используется за сценой в классе Queue, поддерживает итерационный протокол, поэтому можно пройтись по его содержанию итератором или получить список элементов функцией list. Честно не знаю насколько он подходит. В официальной документации сказано что он потоко-безопасен:
Deques are a generalization of stacks and queues (the name is pronounced “deck” and is short for “double-ended queue”). Deques support thread-safe, memory efficient appends and pops from either side of the deque with approximately the same O(1) performance in either direction.