많은 양의 데이터를 처리하고 모니터 및 뱅크 데이터를 처리하는 데 사용하는 Windows XP를 실행하는 컴퓨터가 있습니다. 일반적으로 그것은 꽤로드되어 있습니다.오버로드 된 컴퓨터에서 파일 공유
실시간 데이터가있는 특정 파일 하나가 여러 사용자에게 유용합니다. 이 파일을 필요로하는 두 개의 프로그램이 있습니다. 하나는 숫자 데이터를 표시하고 다른 하나는 숫자 데이터를 표시하는 프로그램입니다. 모든 사용자는 자신의 시스템에서 두 프로그램의 인스턴스를 실행할 수 있습니다. 이 프로그램은 1 초마다 업데이트되는 실시간 데이터 파일을 검색합니다. 둘 다 Perl로 작성되었으며 어느 프로그램도 변경하지 말라는 요청을 받았습니다.
컴퓨터의 부하가 크기 때문에 현재 컴퓨터에서 계산을 수행하고 실시간 데이터 파일을 만드는 프로그램을 실행하고 있습니다. 이 프로그램은 단순히 실시간 파일을 오버로드 된 컴퓨터에 씁니다. Windows에는 원자 적 쓰기가 없기 때문에 다른 확장 프로그램에 쓰고 오래된 실시간 파일을 삭제 한 다음 새 파일을 올바른 이름으로 옮기는 메서드를 만들었습니다. 안타깝게도 컴퓨터에 대한 사용자로드가 증가하면 쓰기 작업이 오래 걸리고 (이상적이지는 않지만 실제로 사용 가능함) 더 고민 스럽지만 오래된 실시간 파일을 삭제하고 새 파일을 올바른 이름으로 옮기는 시간이 늘어납니다 Perl 프로그램에 오류가 발생하여 많은 도움이됩니다. 두 프로그램 모두 파일 수정 시간이 변경되었는지 확인합니다 (파일 잠금을 확인하지 않음). 파일이 누락되면 화가 나고 오류 메시지가 출력됩니다.
첫 번째 과정은 오버로드 된 컴퓨터에서이 모든 프로세스를 멀리 옮기는 것이라고 생각합니다. 내 다른 생각은 다른 컴퓨터에 파일의 복사본 번호를 만들고 다른 사용자가 다른 장소에서 파일을 읽을 (이것은 진짜 해킹 것입니다)했다.
전 세계 네트워킹 및 파일 공유에 익숙하지 않지만이를 수행하는 더 좋은 방법이 있음을 알고 있습니다. 솔직히 말해서이 전체 방법은 약간 해킹 된 것이지만 그것이 내가 여기에 왔을 때의 방법입니다.
마지막으로이 동일한 프로세스가 UNIX 시스템에서 실행되며 이러한 문제가 없음을 언급 할 필요가 있습니다. 이런 이유로 저는 원자력에 대한 필요성에 책임이 있다고 생각합니다. 나는이 문제를 해결하기 위해 인터넷을 검색해 왔으며 여러 가지 다른 방법 (예 : 현재 확장 방법 변경)을 시도했다.
이 문제를 해결할 수 있도록 누군가가 올바른 방향으로 나를 가리킬 수 있습니까?
내 코드는 Python으로 작성되었습니다.
높은 우선 순위로 프로세스를 설정하는 것에 대해서는 잘 모릅니다. 파이썬에서 함수 호출을 위해 이것을 할 수있는 방법이 있습니까? 마치 내가 파이썬 코드에서 다른 언어를 실행하고있는 것처럼 느껴진다. 내 cygwin mv 명령과 같은 것을 사용할 수있다. 이미 파일을 자동으로 대체한다. (어쩌면 당신이 말하는 것과 비슷한 방법을 구현할 수 있을까?) –
물론, 게다가.스케줄러의 우선 순위를 설정할 필요는 없으며, CPU로드가있을 때 가능한 한 신뢰할 수있는 동작으로 만들기위한 제안 일뿐입니다. – Dave
http://stackoverflow.com/questions/167414/is-an-atomic-file-rename-with-overwrite-possible-on-windows를 참조하십시오. – Dave