Присвоение значения объекта глобальной переменной является атомарной операцией в Python. Другие потоки не могут прочитать переменную неправильно, читая ее, пока она присваивается. GIL гарантирует это в C-реализации Python, но другие реализации могут и действительно дают такую же гарантию по-разному.
Если глобальная переменная является изменяемым объектом, например списком, и вы изменяете этот объект, это зависит от используемого вами метода. Большинство методов встроенных объектов, таких как списки, являются атомарными.
Я не могу с уверенностью сказать, что вам не нужна блокировка, не зная более подробной информации о назначении этой переменной и о том, как вы ее используете. Почему поток-2 должен изменить свое поведение на основе этого значения, и это нормально, если поток-1 изменяет значение сразу после того, как поток-2 принял решение? Если это не так, возможно, вам все еще нужен замок.
(Аналогичная ситуация в C - присвоение значения переменной-указателю - также является атомарной в обычных условиях, хотя назначения указателей можно изменить. В некоторых случаях вы можете использовать это, чтобы избежать блокировок в C).