Разумно полагать, что dict.pop
работает атомарно, так как он повышает KeyError
если указанный ключ отсутствует, и не предоставляется по умолчанию, например, так:Является ли python dict.pop атомом?
d.pop(k)
Однако, документация не представляется конкретно решить эту точку , по крайней мере, не в разделе, специально документирующем dict.pop
.
Этот вопрос мне пришло в голову, когда я просматривал an answer of mine, который использовал этот шаблон:
if k in d: del d[k]
В то время я не думал о потенциальном условии, что ключ может присутствовать во время if
, но не на момент del
. Если dict.pop
действительно представляет собой атомную альтернативу, то я должен отметить это в своем ответе.
Связанные: [Какие виды глобальных изменений мутаций являются потокобезопасными?] (Http://goo.gl/dHxwN) –