为什么windows会报告用不同的floatrounding向文件写入随机数行所花费的时间,而不是osx?

2024-09-25 16:20:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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

但在osx 2.7版本中不会出现这种情况。 osx output

python的windows实现与osx如何不同地处理时间浮动?它们都是64位的,都在python2.7上,都有intel核心处理器,都有ssd(尽管这不重要)。那么为什么windows/python处理浮动的方式不同呢?如何让windows显示macbook上更精确的数字

一些观察结果: mac在写操作所需的时间上似乎也有较大的差异。而windows似乎一直采用5.7-6μ平均每个写入记录的mac值在8-24之间μs。 有点惊讶的3-4岁的桌面更快与非常相似的总体规格,但我猜这是因为桌面可能有一个更大的三级缓存,即使芯片是旧的,只是略快。那是另一个论坛

我用“麦克”是因为μs抛出了各种各样的编码错误。立即表扬任何人,纠正了日志线分配工作μ任何控制台都有


Tags: infortimewindows时间someitemdict
1条回答
网友
1楼 · 发布于 2024-09-25 16:20:08

始终使用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

相关问题 更多 >