Lock в Python multiprocessingЕсли несколько процессов одновременно пишут в общий ресурс — файл, stdout, shared memory — вывод или данные могут перемешиваться.
Для этого есть
multiprocessing.Lock:
from multiprocessing import Process, Lock
def printer(item, lock):
with lock:
print(item)
if __name__ == "__main__":
lock = Lock()
for item in ["tango", "foxtrot", 10]:
Process(target=printer, args=(item, lock)).start()
Lock гарантирует, что критическую секцию в конкретный момент выполняет только один процесс.
Вместо ручных:
lock.acquire() → try/finally → lock.release()
обычно удобнее использовать:
with lock:
Особенно полезно при работе с файлами, логами и общими структурами данных между процессами.
