2010-03-11 5 views
3

centos 5.3 용 python 2.6.4를 컴파일했고 os.path.getmtime() 또는 os.stat(). m_time이이 문제를 발견했습니다. 분수 부분을 가지고있다. docs에 따라 os.stat_float_times()가 True를 반환하면 float 값을 반환해야합니다. 제 경우에는 플로트로 보지만 분수는 없습니다 (0).os.path.getmtime()이 초의 분수를 반환하지 않음

In [3]: os.path.getmtime('/tmp') 
Out[3]: 1268339116.0 

In [4]: os.stat('/tmp') 
Out[4]: posix.stat_result(st_mode=17407, st_ino=508897L, st_dev=29952L, st_nlink=7, st_uid=0, st_gid=0, st_size=4096L, st_atime=1268101696, st_mtime=1268339116, st_ctime=1268339116) 

In [5]: os.stat_float_times() 
True 

In [6]: os.stat('/tmp').st_mtime 
Out[6]: 1268339116.0 

stat() 출력이 int처럼 보일 수도 있습니다. 윈도우즈에서는 동일한 파이썬 버전을 가진 부분을 볼 수 있습니다. 나는 centos를 colinux의 최상위에서 돌리고 있는데, 역할을 할 수 있을지, 아니면 파이썬 빌드 문제일까요? 제네릭 colinux 문제에 대한 히트를 찾을 수 없었습니다. colinux가 파일 시스템을 어떻게 설정 하는가? 이 경우 무엇을 확인해야합니까?

답변

6

이것은 파이썬이 아닌 파일 시스템 제한 사항입니다. Centos는 여전히 정수 mtimes를 제공하는 ext3에 있습니다. 당신은 ls으로 mtimes를 표시하면 이것을 볼 수 있습니다. 내가

drwxrwxrwt 16 root root 20480 2010-03-11 21:20:02.088188962 +0000 /tmp 

이것은 ext4 Wikipedia article에서 설명을 얻을, 내 ext4에 우분투 상자에서

drwxrwxrwt 11 root root 69632 2010-03-11 13:16:30.000000000 -0800 /tmp 

를 얻을, 내 EXT3를 CentOS 상자에서

ls -ld --full-time /tmp 

을 시도해보십시오

향상된 타임 스탬프

컴퓨터가 일반적으로 더 빨라지고 업무용 응용 프로그램에 Linux가 많이 사용됨에 따라 두 번째 기준 타임 스탬프의 정밀도가 불충분 해집니다. 이를 해결하기 위해 ext4는 나노초 단위로 측정 된 타임 스탬프를 제공합니다. 또한 확장 된 타임 스탬프 필드의 2 비트가 타임 스탬프의 초 필드의 최상위 비트에 추가되어 추가 204 년 동안 2038 년 문제를 지연시킵니다.

+0

감사합니다. 나는 파일 시스템이 ext3이라는 것을 확인했고 이것이 실제로 제한 사항임을 실제로 알지 못했다. 이 정보는 프로그램을 튜닝하는 데 도움이되며 대신 ext4를 사용하기로 결정할 수도 있습니다. – haridsv

관련 문제