基本上我有一个文件,该文件具有计算某些过程的时间的代码。但是它不能正常工作。如果我将函数的内容放到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
如果我将此代码放在没有功能的主程序中,则显示正确: 0:0:4
任何人都可以帮助解释为什么会发生这种情况吗?
谢谢
卢卡斯·安东尼(Lucas Antoni)
答案 0 :(得分:0)
此功能:
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
是全局变量。