我有一个python脚本,它将dict的对象写到一个文件中。在Windows 10上使用2.7时,写入的持续时间报告为毫秒数,后面是.0000nnn或.9999nnnn。
我正在使用python的时间库,就像这样:
import time
logline = ""
def writer(mydict):
records = 0
global logline
lstart_time = time.time()
for item in mydict:
some_open_file.write(item)
dur = time.time() - lstart_time
logline +=("\t{0:25}transformed {2} records in {1} ms; avg: {3:2.3f} mis per record.\n".format(
page['name'], (dur*1000), records, (dur/records)*1000000))
for documents in bigdict:
logline += some_dict['title']
for x in some_dict['records']:
writer(x)
print(logline)
windows
但在2.7版本的OSX中却没有。
osx output
python的windows实现如何处理与osx不同的时间浮动?两者都是64位的,都在Python2.7上,都有英特尔核心处理器,都有固态硬盘(尽管这不重要)。那么为什么windows/python处理浮动的方式不同呢?如何让windows显示我在macbook上得到的更精确的数字?
一些观察:
mac在写操作所需的时间上似乎也有较大的差异。虽然windows似乎总是平均每次写入记录花费5.7-6μs,mac则在8-24μs之间。
3-4岁的台式机速度更快,总体规格非常相似,这有点让人惊讶,但我猜测这是因为台式机可能有更大的L3缓存,即使芯片更老,速度稍快。那是另一个论坛。
我用“mic”是因为μs抛出了各种编码错误。立即表扬任何人,纠正日志分配与μs在任何控制台工作。
最佳答案
始终使用timeit.default_timer()
:
import timeit
lstart_time = timeit.default_timer()
dur = timeit.default_timer() - lstart_time
在windows上,
time.time()
是非常粗糙的,通常对计时没有用处。timeit.default_timer()
在windows和其他平台的引擎盖下使用不同的功能。在Python2.7中,这些是Windows下的time.clock()
和POSIX(Unix,Mac)平台的time.time()
。在windows上time.clock()
有更好的分辨率。不幸的是,在unix系统上time.clock()
有不同的含义,并返回自程序启动以来的cpu。关于python - 为什么Windows会报告将不同数量的舍入舍入与osx不同的随机数行写入文件所花费的时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34465897/