Python Auto Reload とファイル変更管理

前にCherryPyのAutoReload機能についてメモったけど、今回はその中でもファイルの変更を監視してる部分をチェキ。

    def autoreload(self):
        """Reload the process if registered files have been modified."""
        sysfiles = []
     #ファイルの事前処理
        for k, m in sys.modules.items():
            if re.match(self.autoreload_match, k):
                if hasattr(m, "__loader__"):
                    if hasattr(m.__loader__, "archive"):
                        k = m.__loader__.archive
                k = getattr(m, "__file__", None)
                sysfiles.append(k)
        #ここでファイルの最終変更時間を比較、異なる場合は再実行。
        for filename in sysfiles + self.reload_files:
            if filename:
                if filename.endswith(".pyc"):
                    filename = filename[:-1]
                
                oldtime = self.mtimes.get(filename, 0)
                if oldtime is None:
                    # Module with no .py file. Skip it.
                    continue
                
                try:
                    mtime = os.stat(filename).st_mtime
                except OSError:
                    # Either a module with no .py file, or it's been deleted.
                    mtime = None
                
                if filename not in self.mtimes:
                    # If a module has no .py file, this will be None.
                    self.mtimes[filename] = mtime
                else:
                    if mtime is None or mtime > oldtime:
                        # The file has been deleted or modified.
                        self.reexec()

すんません、かなり適当。けど今取り込んでるのでこのくらい。今度追記しておきます。