Python的datetime.now()parsing

from datetime import datetime import time for i in range(1000): curr_time = datetime.now() print(curr_time) time.sleep(0.0001) 

我正在testingdatetime.now()的分辨率。 由于它假设以微秒输出,我预计每个打印都会有所不同。

不过,我总是得到这样的东西。

 ... 2015-07-10 22:38:47.212073 2015-07-10 22:38:47.212073 2015-07-10 22:38:47.212073 2015-07-10 22:38:47.212073 2015-07-10 22:38:47.212073 2015-07-10 22:38:47.212073 2015-07-10 22:38:47.212073 2015-07-10 22:38:47.212073 2015-07-10 22:38:47.212073 2015-07-10 22:38:47.212073 2015-07-10 22:38:47.212073 2015-07-10 22:38:47.212073 2015-07-10 22:38:47.212073 2015-07-10 22:38:47.213074 2015-07-10 22:38:47.213074 2015-07-10 22:38:47.213074 2015-07-10 22:38:47.213074 2015-07-10 22:38:47.213074 2015-07-10 22:38:47.213074 2015-07-10 22:38:47.213074 2015-07-10 22:38:47.213074 2015-07-10 22:38:47.213074 2015-07-10 22:38:47.213074 2015-07-10 22:38:47.213074 ... 

为什么会发生? 有什么办法可以将精确的时间戳降到微秒? 实际上我不需要几微秒,但是0.1毫秒的分辨率会很好。

===更新====

我将它与使用time.perf_counter()进行比较,并添加到从datetime开始datetime导入date时间,timedelta导入时间

 datetime0 = datetime.now() t0 = time.perf_counter() for i in range(1000): print('datetime.now(): ', datetime.now()) print('time.perf_counter(): ', datetime0 + timedelta(0, time.perf_counter()-t0)) print('\n') time.sleep(0.000001) 

我不确定它到底有多“准确”,但是分辨率至less要高一些……似乎并不重要,因为我的电脑甚至无法以高速打印。 为了我的目的,我只需要不同的时间戳来区分不同的条目,这对我来说已经足够了。

 ... datetime.now(): 2015-07-10 23:24:18.010377 time.perf_counter(): 2015-07-10 23:24:18.010352 datetime.now(): 2015-07-10 23:24:18.010377 time.perf_counter(): 2015-07-10 23:24:18.010545 datetime.now(): 2015-07-10 23:24:18.010377 time.perf_counter(): 2015-07-10 23:24:18.010745 datetime.now(): 2015-07-10 23:24:18.011377 time.perf_counter(): 2015-07-10 23:24:18.010961 datetime.now(): 2015-07-10 23:24:18.011377 time.perf_counter(): 2015-07-10 23:24:18.011155 datetime.now(): 2015-07-10 23:24:18.011377 time.perf_counter(): 2015-07-10 23:24:18.011369 datetime.now(): 2015-07-10 23:24:18.011377 time.perf_counter(): 2015-07-10 23:24:18.011596 datetime.now(): 2015-07-10 23:24:18.012379 time.perf_counter(): 2015-07-10 23:24:18.011829 datetime.now(): 2015-07-10 23:24:18.012379 time.perf_counter(): 2015-07-10 23:24:18.012026 datetime.now(): 2015-07-10 23:24:18.012379 time.perf_counter(): 2015-07-10 23:24:18.012232 datetime.now(): 2015-07-10 23:24:18.012379 time.perf_counter(): 2015-07-10 23:24:18.012424 datetime.now(): 2015-07-10 23:24:18.012379 time.perf_counter(): 2015-07-10 23:24:18.012619 datetime.now(): 2015-07-10 23:24:18.013380 time.perf_counter(): 2015-07-10 23:24:18.012844 datetime.now(): 2015-07-10 23:24:18.013380 time.perf_counter(): 2015-07-10 23:24:18.013044 datetime.now(): 2015-07-10 23:24:18.013380 time.perf_counter(): 2015-07-10 23:24:18.013242 datetime.now(): 2015-07-10 23:24:18.013380 time.perf_counter(): 2015-07-10 23:24:18.013437 datetime.now(): 2015-07-10 23:24:18.013380 time.perf_counter(): 2015-07-10 23:24:18.013638 datetime.now(): 2015-07-10 23:24:18.014379 time.perf_counter(): 2015-07-10 23:24:18.013903 datetime.now(): 2015-07-10 23:24:18.014379 time.perf_counter(): 2015-07-10 23:24:18.014125 datetime.now(): 2015-07-10 23:24:18.014379 time.perf_counter(): 2015-07-10 23:24:18.014328 datetime.now(): 2015-07-10 23:24:18.014379 time.perf_counter(): 2015-07-10 23:24:18.014526 datetime.now(): 2015-07-10 23:24:18.014379 time.perf_counter(): 2015-07-10 23:24:18.014721 datetime.now(): 2015-07-10 23:24:18.015381 time.perf_counter(): 2015-07-10 23:24:18.014919 ... 

Solutions Collecting From Web of "Python的datetime.now()parsing"

这可能是time.sleep在你的系统上的限制,而不是datetime.now() …或者可能是两者。 什么操作系统,什么版本和Python的分布是你在上运行?

您的系统可能不会提供time.sleep文档中提到的“亚秒精度”:

 sleep(...) sleep(seconds) Delay execution for a given number of seconds. The argument may be a floating point number for subsecond precision. 

使用CPython 2.7的amd64上的Linux 3.x上 ,我得到了一个非常接近你想要的0.0001时间步长的东西:

 2015-07-10 19:58:24.353711 2015-07-10 19:58:24.353879 2015-07-10 19:58:24.354052 2015-07-10 19:58:24.354227 2015-07-10 19:58:24.354401 2015-07-10 19:58:24.354577 2015-07-10 19:58:24.354757 2015-07-10 19:58:24.354938