Мы проводили много тестов Python, работающих по удаленному соединению. Программа запускается за пределами предприятия, но доступ к дискам на месте. Мы работаем под RHEL6. Мы смотрели простую программу с strace. Похоже, он тратит много времени на выполнение stat и открывает файлы, чтобы узнать, есть ли они там. За удаленным подключением это дорого. Есть ли способ настроить Python для чтения содержимого каталогов один раз и кэшировать его, чтобы он не проверял его снова?
Пример программы test_import.py:
import random
import itertools
Я выполнил следующие команды:
$ strace -Tf python test_import.py >& strace.out
$ grep '/usr/lib64/python2.6/' strace.out | wc
331 3160 35350
Итак, он ищет в этом каталоге примерно 331 раз. Многие из них имеют такие результаты, как:
stat ( "/usr/lib64/python2.6/posixpath", 0x7fff1b447340 ) = -1 ENOENT ( No such file or directory ) < 0.000009 >
Если он кэшировал каталог, ему не пришлось бы ставить файл, чтобы увидеть, есть ли он.