두 개의 응용 프로그램 인스턴스로 리소스에 대한 액세스 제어

user2109788

어떤 기능이 가장 많이 사용되는지 내 애플리케이션의 사용량을 계산해야하는 사용 사례가 있습니다. 모든 통계를 파일에 저장하고 있습니다. 응용 프로그램을 닫을 때마다 해당 파일에 통계를 기록합니다.

응용 프로그램은 독립형이며 서버에 있으며 여러 사람이 응용 프로그램을 실행하여 동시에 응용 프로그램을 사용할 수 있습니다 (따라서 응용 프로그램의 여러 복사본이 서로 다른 위치에서 실행됩니다).

따라서 문제는 여러 사람이 동시에 통계를 업데이트하려고하면 잘못된 통계 (동시성 제어 문제)를 얻을 가능성이 있다는 것입니다. 그렇다면 파이썬에서 그러한 상황을 어떻게 처리 할 수 ​​있습니까?

내 통계 파일에 다음 데이터를 저장합니다.

stats  = {user1 : {feature1 : count, feature2 : count, etc..},
          user2 : {feature1 : count, feature2 : count, etc..}
}
유나 케

portalocker 를 사용할 수 있으며 파일 시스템 잠금을 사용하는 이식 가능한 방법을 제공하는 훌륭한 모듈입니다.

하나의 플랫폼에 국한된 경우 일반적으로 Python 표준 라이브러리를 통해 노출되는 플랫폼 별 파일 잠금 기본 형식을 사용할 수 있습니다.

적절한 데이터베이스를 사용할 수도 있지만 당면한 작업에는 엄청난 과잉 인 것처럼 보입니다.

편집 : 스레딩 잠금을 사용하려는 것을보고,하지 마십시오! 스레딩 잠금 (뮤텍스 또는 세마포어)은 동일한 프로세스의 여러 스레드가 공유 변수에 액세스하는 것을 방지 할 뿐이며 개별 프로세스, 특히 독립 프로그램 인스턴스에서 작동 하지 않습니다 ! 필요한 것은 스레드 잠금이 아닌 파일 잠금 메커니즘입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

장치에 대한 응용 프로그램 액세스 제한

분류에서Dev

응용 프로그램의 한 인스턴스 만 실행 (새 인스턴스 종료 및 이전 인스턴스 표시 또는 포커스 제공)

분류에서Dev

동일한 응용 프로그램의 두 인스턴스를 설치하는 방법이 있습니까?

분류에서Dev

동일한 응용 프로그램의 두 개 이상의 인스턴스간에 전환하기위한 키보드 단축키?

분류에서Dev

전체 응용 프로그램에서 개체의 인스턴스를 사용 가능한 상태로 유지

분류에서Dev

다중 스레드 응용 프로그램의 프로세서 수 제한

분류에서Dev

서버의 내 시스템 웹 응용 프로그램 파일에 대한 액세스 차단

분류에서Dev

실행 중 다른 프로그램 및 사용자의 특정 파일에 대한 액세스 제한

분류에서Dev

ServiceHost의 두 인스턴스가 하나의 응용 프로그램에있을 수 있습니까?

분류에서Dev

Citrix에서 C # 프로그램의 인스턴스를 사용자 당 한 명으로 제한하는 방법

분류에서Dev

Office 응용 프로그램의 기존 인스턴스 찾기

분류에서Dev

"이 응용 프로그램은 제한이 없습니다. 모든 개인 파일 및 시스템 리소스에 액세스 할 수 있습니다." - 무슨 뜻이에요?

분류에서Dev

WPF 응용 프로그램에 대한 제어 텍스트 설정

분류에서Dev

Windows Vista에서 프로그램에 대한 액세스 제한

분류에서Dev

익명 웹 응용 프로그램의 레이아웃 폴더에 대한 SharePoint 익명 액세스

분류에서Dev

Qt5 응용 프로그램의 두 번째 인스턴스가 명령 줄 인수를 첫 번째 인스턴스로 전송하도록합니다.

분류에서Dev

데이터 액세스 개체 응용 프로그램

분류에서Dev

응용 프로그램에서 릴리스 한 리눅스 제로 메모리

분류에서Dev

동일한 프로그램의 2 개 인스턴스 열기

분류에서Dev

Haskell : 인스턴스의 잘못된 유형 동의어 패밀리 응용 프로그램

분류에서Dev

응용 프로그램의 리소스를 어디에 저장합니까?

분류에서Dev

한 Tomcat 인스턴스의 여러 웹 응용 프로그램이 다른 응용 프로그램의 속성 파일로 시작됩니다.

분류에서Dev

.NET 액세스 및 제어 변수와 외부 응용 프로그램의 메서드

분류에서Dev

.NET 응용 프로그램의 기본 액세스 위반

분류에서Dev

Gnome-한 응용 프로그램의 인스턴스를 전환하는 바로 가기

분류에서Dev

Linux에서 공유 리소스에 대한 응용 프로그램 [프로세스] 전환 방지

분류에서Dev

별도의 응용 프로그램에서 동일한 응용 프로그램 풀 내에서 사용자 컨트롤에 액세스

분류에서Dev

두 개의 다른 프로그램에서 동일한 파일에 액세스하는 것이 맞습니까?

분류에서Dev

Linux에서 응용 프로그램의 (Windows 유형) 인스턴스 만들기

Related 관련 기사

  1. 1

    장치에 대한 응용 프로그램 액세스 제한

  2. 2

    응용 프로그램의 한 인스턴스 만 실행 (새 인스턴스 종료 및 이전 인스턴스 표시 또는 포커스 제공)

  3. 3

    동일한 응용 프로그램의 두 인스턴스를 설치하는 방법이 있습니까?

  4. 4

    동일한 응용 프로그램의 두 개 이상의 인스턴스간에 전환하기위한 키보드 단축키?

  5. 5

    전체 응용 프로그램에서 개체의 인스턴스를 사용 가능한 상태로 유지

  6. 6

    다중 스레드 응용 프로그램의 프로세서 수 제한

  7. 7

    서버의 내 시스템 웹 응용 프로그램 파일에 대한 액세스 차단

  8. 8

    실행 중 다른 프로그램 및 사용자의 특정 파일에 대한 액세스 제한

  9. 9

    ServiceHost의 두 인스턴스가 하나의 응용 프로그램에있을 수 있습니까?

  10. 10

    Citrix에서 C # 프로그램의 인스턴스를 사용자 당 한 명으로 제한하는 방법

  11. 11

    Office 응용 프로그램의 기존 인스턴스 찾기

  12. 12

    "이 응용 프로그램은 제한이 없습니다. 모든 개인 파일 및 시스템 리소스에 액세스 할 수 있습니다." - 무슨 뜻이에요?

  13. 13

    WPF 응용 프로그램에 대한 제어 텍스트 설정

  14. 14

    Windows Vista에서 프로그램에 대한 액세스 제한

  15. 15

    익명 웹 응용 프로그램의 레이아웃 폴더에 대한 SharePoint 익명 액세스

  16. 16

    Qt5 응용 프로그램의 두 번째 인스턴스가 명령 줄 인수를 첫 번째 인스턴스로 전송하도록합니다.

  17. 17

    데이터 액세스 개체 응용 프로그램

  18. 18

    응용 프로그램에서 릴리스 한 리눅스 제로 메모리

  19. 19

    동일한 프로그램의 2 개 인스턴스 열기

  20. 20

    Haskell : 인스턴스의 잘못된 유형 동의어 패밀리 응용 프로그램

  21. 21

    응용 프로그램의 리소스를 어디에 저장합니까?

  22. 22

    한 Tomcat 인스턴스의 여러 웹 응용 프로그램이 다른 응용 프로그램의 속성 파일로 시작됩니다.

  23. 23

    .NET 액세스 및 제어 변수와 외부 응용 프로그램의 메서드

  24. 24

    .NET 응용 프로그램의 기본 액세스 위반

  25. 25

    Gnome-한 응용 프로그램의 인스턴스를 전환하는 바로 가기

  26. 26

    Linux에서 공유 리소스에 대한 응용 프로그램 [프로세스] 전환 방지

  27. 27

    별도의 응용 프로그램에서 동일한 응용 프로그램 풀 내에서 사용자 컨트롤에 액세스

  28. 28

    두 개의 다른 프로그램에서 동일한 파일에 액세스하는 것이 맞습니까?

  29. 29

    Linux에서 응용 프로그램의 (Windows 유형) 인스턴스 만들기

뜨겁다태그

보관