[Python] lock 사용법

2023. 10. 4. 15:08

.lock 파일

파일 락(lock)을 관리하고 다른 프로세스 또는 스레드와의 충돌을 방지하기 위해 사용되는 파일

일반적으로 어떤 프로세스가 파일을 사용하고 있는지 나타내는 역할

 

파일을 쓰고 있는 동안 다른 프로세스나 스레드가 해당 파일을 동시에 수정하려고 할 때 충돌이 발생하는 것을 방지

 

 

 

파일 접근제어

.lock 파일이 있는 경우

이 파일을 소유한 프로세스만 해당 파일을 수정할 수 있으며,

다른 프로세스는 접근을 시도할 때 대기하거나 충볼을 방지하기 위한 작업을 수행

파일 락 해제

파일 작업이 완료되면 해당 파일의 락(lock)을 해제

이는 다른 프로세스나 스레드가 해당 파일을 수정할 수 있도록 허용하는 역할

동기화

.lock 파일은 데이터베이스 파일 또는 다른 공유 리소스에 대한 동기화에 사용될 수 있음

 


 

락 걸기 (Locking)

파일을 락으로 설정하여 다른 프로세스 또는 스레드의 접근을 제한

주로 사용되는 락 함수로는 fcntl(파일 컨트롤) 또는 flock(파일 락)과 같은 POSIX 표준 라이브러리가 있음

 

프로세스 간 동기화를 위해 뮤텍스(Mutex)나 세마포어(Semaphore)와 같은 동기화 기법을 사용할 수 있음

import fcntl

file = open("example.txt", "w")

# 파일 락 걸기
fcntl.flock(file.fileno(), fcntl.LOCK_EX)

# 파일을 안전하게 수정 가능

# 파일 락 해제
fcntl.flock(file.fileno(), fcntl.LOCK_UN)

file.close()

락 해제 (Unlocking)

파일 락을 해제하여 다른 프로세스나 스레드의 접근을 허용

fcntl 이나 flock을 사용하여 파일 락을 걸었다면, 해당 라이브러리 함수를 호출하여 락을 해제

 

뮤텍스나 세마포어를 사용한 경우,

해당 뮤텍스나 세마포어의 해제 함수를 호출하여 다른 프로세스에게 리소스를 반환

import fcntl

file = open("example.txt", "w")

# 파일 락 해제
fcntl.flock(file.fileno(), fcntl.LOCK_UN)

file.close()

 

 

파일 락을 제대로 사용하지 않으면 데이터 무결성 문제가 발생할 수 있으므로 주의 필요

'Python > 파이썬 고급' 카테고리의 다른 글

[Python] BackgroundTasks, Celery  (0) 2024.09.06