在程序启动时执行Atexit功能

时间:2013-03-13 20:50:48

标签: python atexit

我有这个简单的程序:

def save_f():
    global register
    register = register_registerer()
    outFile = open('FobbySave.txt', 'wb')
    pickle.dump(register, outFile)
    outFile.close()
    print register

atexit.register(save_f())

问题是我运行程序后会立即调用save_f。这不是我的所有代码,只是重要部分。如果这里没有任何问题请告诉我,以便我知道该怎么做。

2 个答案:

答案 0 :(得分:4)

更改

atexit.register(save_f())

atexit.register(save_f)

在原始代码中,save_f()会调用该函数。然后将函数的返回值(即None)传递给atexit.register()

正确的版本将函数对象本身传递给atexit.register()

答案 1 :(得分:3)

您正在注册函数的返回值而不是函数本身。而不是在注册之前调用它,只需传入函数引用:

atexit.register(save_f)