Python: как не дать нескольким процессам одновременно полезть в один… — Python вопросы с собеседований — TG.ME

Python: как не дать нескольким процессам одновременно полезть в один ресурс

В multiprocessing процессы работают параллельно и иногда пытаются одновременно изменить один и тот же ресурс.

Для таких случаев есть Lock:


from multiprocessing import Process, Lock

def printer(item, lock):
with lock:
print(item)


Дальше один и тот же lock передаётся всем процессам:


if __name__ == "__main__":
lock = Lock()

for item in ["tango", "foxtrot", 10]:
Process(
target=printer,
args=(item, lock)
).start()


Пока один процесс находится внутри with lock:, остальные ждут.

Это особенно полезно при работе с файлами, логами, общими структурами и другими ресурсами, где одновременная запись может привести к race condition.

И лучше использовать with lock:, а не вручную acquire() / release() — так блокировка гарантированно снимется даже при исключении.
👍5🔥3🥰1
August 23, 2026 1.4K 9