【问题标题】:Problem with Timeit - Processing time - Weird NumberTimeit 问题 - 处理时间 - 奇怪的数字
【发布时间】:2019-04-08 15:30:47
【问题描述】:

基本上我有一个文件,其中包含计算某个进程时间的代码。但它工作不正常。如果我将函数的内容放在我的 main 中,就可以工作。

从文件 util.py 计算错误

import timeit

start_process = 0
finish_process = 0

def starting_process():
    start_process = timeit.default_timer()

def time_process():
    finish_process = timeit.default_timer()
    time_total = finish_process - start_process

    # output running time in a nice format.
    mins, secs = divmod(time_total, 60)
    hours, mins = divmod(mins, 60)

    return "Total running time: %d:%d:%d" % (hours, mins, secs)

在一个花费 4 秒的过程中,它显示如下:238:23:55

如果我把这段代码放在我的 main 中没有函数,它会显示正确:0:0:4

任何人都可以帮助解释为什么会发生这种情况?

谢谢,

卢卡斯·安东尼。

【问题讨论】:

    标签: python-3.x timeit


    【解决方案1】:

    这个函数:

    def starting_process():
        start_process = timeit.default_timer()
    

    创建一个局部变量start_process,设置一个值,然后返回None(因为没有明确的return语句)。函数结束时该值丢失。该函数不影响全局变量start_process

    所以当调用time_process() 时,使用start_process 的表达式发现time_process 中没有该名称的局部变量,而是找到设置为0 的全局变量。

    解决此问题的一种方法是使用

    def starting_process():
        global start_process
        start_process = timeit.default_timer()
    

    告诉starting_process变量start_process是全局变量。

    【讨论】:

      猜你喜欢
      • 2015-01-27
      • 2017-07-19
      • 2011-03-23
      • 2012-07-23
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      相关资源
      最近更新 更多