У меня есть функция python, которая проверяет время изменения папки с помощью os.stat()
, а затем выполняет os.listdir()
этой папки.
У меня есть другой процесс, который создает файлы в папке проверяется. Иногда можно заметить, что три файла создаются с одной и той же меткой времени, и статистика папки также имеет одинаковую метку времени.
Когда функция python выбирает файлы за одну и ту же миллисекунду, наблюдается, что os.listdir()
предоставляет только 2 из 3 созданных файлов. Почему это так?
Среда:
ОС: Red Hat Enterprise Linux Серверный выпуск 7.6
Python Версия: Python 3.6.8
Файловая система: xfs
Пример кода
import os
import sys
import time
filelist=list()
last_mtime=None
def walkover():
path_to_check="/path/to/check"
curr_mtime=os.stat(path_to_check).st_mtime_ns
global last_mtime
global filelist
if last_mtime == None or curr_mtime > last_mtime:
for file in os.listdir(path_to_check):
if file not in filelist:
filelist.append(file)
last_mtime = curr_mtime
print ("{} modified at {}".format(path_to_check, last_mtime))
Функция вызывается для поддержки списка файлов в определенный момент времени. Случай if присутствует, чтобы избежать множественных вызовов os.listdir()
.
Edit:
Файлы - это файлы «.rsp», которые создаются ниндзя, когда «.o» собирается получить built.
Так как моя машина имеет несколько ядер (16), ниндзя запускается из cmake с «--parallel 16». Это вызовет одновременное выполнение 16 компиляций.