어떤 기능이 가장 많이 사용되는지 내 애플리케이션의 사용량을 계산해야하는 사용 사례가 있습니다. 모든 통계를 파일에 저장하고 있습니다. 응용 프로그램을 닫을 때마다 해당 파일에 통계를 기록합니다.
응용 프로그램은 독립형이며 서버에 있으며 여러 사람이 응용 프로그램을 실행하여 동시에 응용 프로그램을 사용할 수 있습니다 (따라서 응용 프로그램의 여러 복사본이 서로 다른 위치에서 실행됩니다).
따라서 문제는 여러 사람이 동시에 통계를 업데이트하려고하면 잘못된 통계 (동시성 제어 문제)를 얻을 가능성이 있다는 것입니다. 그렇다면 파이썬에서 그러한 상황을 어떻게 처리 할 수 있습니까?
내 통계 파일에 다음 데이터를 저장합니다.
stats = {user1 : {feature1 : count, feature2 : count, etc..},
user2 : {feature1 : count, feature2 : count, etc..}
}
portalocker 를 사용할 수 있으며 파일 시스템 잠금을 사용하는 이식 가능한 방법을 제공하는 훌륭한 모듈입니다.
하나의 플랫폼에 국한된 경우 일반적으로 Python 표준 라이브러리를 통해 노출되는 플랫폼 별 파일 잠금 기본 형식을 사용할 수 있습니다.
적절한 데이터베이스를 사용할 수도 있지만 당면한 작업에는 엄청난 과잉 인 것처럼 보입니다.
편집 : 스레딩 잠금을 사용하려는 것을보고,하지 마십시오! 스레딩 잠금 (뮤텍스 또는 세마포어)은 동일한 프로세스의 여러 스레드가 공유 변수에 액세스하는 것을 방지 할 뿐이며 개별 프로세스, 특히 독립 프로그램 인스턴스에서 작동 하지 않습니다 ! 필요한 것은 스레드 잠금이 아닌 파일 잠금 메커니즘입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다