program story

폴링없이 파일 변경 감지

inputbox 2020. 11. 27. 08:03
반응형

폴링없이 파일 변경 감지


이 질문에 이미 답변이 있습니다.

파일 시스템의 파일이 수정되었는지 여부를 감지하기 위해 Python 프로그램 내에서 메서드를 사용하려고합니다. 시스템의 마지막 수정 날짜를 확인하기 위해 5 초마다 무언가를 실행할 수 있다는 것을 알고 있지만 프로그램을 반복적으로 확인하지 않고도이 작업을 수행하는 더 쉬운 방법이 있는지 궁금합니다. .

누구든지 그러한 방법을 알고 있습니까?


Linux의 경우 pyinotify가 있습니다.

홈페이지에서 :

Pyinotify는 파일 시스템 변경을 모니터링하기위한 Python 모듈입니다. Pyinotify는 inotify라는 Linux 커널 기능 (커널 2.6.13에 병합 됨)에 의존합니다. inotify는 이벤트 기반 알림이며, 알림은 3 개의 시스템 호출을 통해 커널 공간에서 사용자 공간으로 내보내집니다. pyinotify는 이러한 시스템 호출을 바인딩하고 그 위에 구현을 제공하여 이러한 기능을 조작하는 일반적이고 추상적 인 방법을 제공합니다.

따라서 분명히 크로스 플랫폼이 아니며 새로운 커널 버전에 의존합니다. 그러나 내가 볼 수있는 한 커널 지원을 요구하는 것은 비 폴링 메커니즘에 대해 사실 일 것입니다.


지키는 개

디렉토리 감시를위한 우수한 크로스 플랫폼 라이브러리.

웹 사이트에서

지원되는 플랫폼

  • Linux 2.6 (inotify)

  • Mac OS X (FSEvents, kqueue)

  • FreeBSD / BSD (kqueue)

  • Windows (I / O 완료 포트가있는 ReadDirectoryChangesW, ReadDirectoryChangesW 작업자 스레드)

  • OS 독립적 (디렉터리 스냅 샷용 디스크 폴링 및 주기적으로 비교, 느리고 권장되지 않음)

나는 몇 개의 프로젝트에서 그것을 사용했으며 훌륭하게 작동하는 것 같습니다.


창문에는 다음이 있습니다.

watcher 는 .NET FileSystemWatcher API의 멋진 파이썬 포트입니다.

또한 (내가 쓴) dirwatch 있습니다.

둘 다 Windows ReadDirectoryChangesW 함수 에 의존 합니다. 실제 작업을 위해서는 watcher (적절한 C 확장, 좋은 API, 파이썬 2 및 3 지원)를 사용합니다.

Mine은 대부분 Windows에서 관련 API를 호출하는 실험이므로 Python에서 이러한 항목을 호출하는 예제를 원하는 경우에만 흥미 롭습니다.


또한 앞서 언급 한 pyinotify와 매우 유사한 inotifyx표시되어야 하지만 덜 변경되는 API가 있다고합니다.

참고 URL : https://stackoverflow.com/questions/5738442/detect-file-change-without-polling

반응형