Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
windows中的Python脚本在测量点之间不使用时间间隔_Python_Windows_Time_File Io - Fatal编程技术网

windows中的Python脚本在测量点之间不使用时间间隔

windows中的Python脚本在测量点之间不使用时间间隔,python,windows,time,file-io,Python,Windows,Time,File Io,我创建了一个使用套接字传输文件(客户端/服务器)的小程序。在发送函数中,我测量了执行某些任务所需的时间,以估计传输的平均速度 while (l): start_time = time.time() self.__sendData(l) acc += len(l) self.__setProgress(acc) l = f.read(1024) elapsed_time = time.time() - start_time print("lo

我创建了一个使用套接字传输文件(客户端/服务器)的小程序。在发送函数中,我测量了执行某些任务所需的时间,以估计传输的平均速度

while (l):
    start_time = time.time()
    self.__sendData(l)
    acc += len(l)
    self.__setProgress(acc)
    l = f.read(1024)
    elapsed_time = time.time() - start_time
    print("longitud: " + str(len(l)))
    print("total: " + str(elapsed_time))
    self.__setSpeed(len(l), elapsed_time)
在这里,您可以看到我有一个
acc
(umulator)var来计算传输的总进度。我读取文件的下一个
1024
字节,并计算执行这些操作所需的时间。我的函数
\uu setSpeed
仅使用最新的
50
瞬时速度计算平均速度

这个在Linux中运行良好,完全没有问题。但是,在Windows中运行时,我发现以下输出:

正如您所看到的,很多时候传输和文件读取的
时间
正好是
。我不明白为什么会这样,因为:

  • 我可以想象(只是猜测)在Windows中,文件可能会被缓冲,因此文件的
    readtime
    变为0。嗯
  • sendData
    功能可能非常快,因为它的数量非常小。好吧,但真的是零
  • 此外,我们还应该添加一些真正少量的命令,以便其他命令执行,如控制结构、函数内部等等
  • 所以基本上我的问题有两个:

  • 为什么会发生这种情况?我应该用另一种方法来测量吗
  • 哪种方法准确且适合在操作系统、Windows和Linux中使用

  • 在Windows中,
    time.time
    基于。我们可以通过
    时间获得该时钟的分辨率。获取时钟信息
    。对于它调用的系统时钟。默认分辨率为15.625毫秒:

    >>> time.get_clock_info('time').resolution
    0.015625
    
    应该能解决你的问题。在Windows中,它基于。要获取此时钟的分辨率,
    get\u clock\u info
    调用。通常为100纳秒:

    >>> time.get_clock_info('perf_counter').resolution
    1e-07