这是一个由两部分组成的问题,第一部分很简单。我试图将当前时间作为一个高分辨率的数字,这可以通过Perl中的Time :: HiRes模块轻松完成。我确实在其他地方找到了这些问题的答案,在python中使用time.time()。唯一的事情是,当我这样做时,我得到2位有效数字,我想知道我是否需要导入其他东西或在我的环境中设置什么或什么。看看这个:
>>> import time
>>> print time.time()
1326459121.68
我的第二个问题与setitimer有关,根据文档说它会发出警报,时间可以指定为浮点数。听起来正是我想要的。事实上,根据这个 - python timer mystery,它看起来很容易使用。但是,当我对该示例进行精确复制时,我得到了这个:
[root@poker python]# ./signal.py
Traceback (most recent call last):
File "./signal.py", line 10, in ?
signal.setitimer(signal.ITIMER_REAL, 2, 2)
AttributeError: 'module' object has no attribute 'setitimer'
也许部分我的问题是,作为一个新的python用户,我仍然不是'一个用python',也许我不理解它试图告诉我的错误消息。是抱怨它找不到signal.setitimer或者我传递的属性有什么问题吗?我想知道它是否无法解决signal.ITIMER_REAL,所以尝试用0调用它只是为了看看会发生什么,现在它告诉我:
[root@poker python]# ./signal.py
Traceback (most recent call last):
File "./signal.py", line 10, in ?
signal.setitimer(0, 2, 2)
AttributeError: 'module' object has no attribute 'setitimer'
所以我不得不相信signal.setitmer本身存在问题。
啊哈!我只是通过在具有更新版本的python的VM上尝试此问题来解决问题,并且它工作得很好。看起来setitimer不适用于我的python版本但是如何从错误消息中判断出来?难道不是说模块没有方法吗?调用缺少的方法属性非常混乱。
也许这只是学习曲线的一部分。无论如何,我以为我会把这第二个问题保留在这里,所以其他人可能会受益,但我仍然感到难以接受的是我从时间上得不到很高的结果。时间()仍然只报告百分之一秒甚至是这个更新版本的python。
答案 0 :(得分:4)
time.time()返回更多数字,但 repr 截断为2。
>>> import time
>>> time.time()
1326460396.626451
>>> print time.time()
1326460422.68
无法找到setitimer的问题很简单,因为你已经命名了你的python脚本'signal.py',当你在脚本中'导入信号'时,你实际上是在导入你的脚本 - - 不是信号模块。只需将其重命名为其他内容即可。