14.10.3 撤销回调
要撤销一个退出回调,可以使用unregister()把它从注册表删除。
import atexit
def my_cleanup(name):
print('my_cleanup({})'.format(name))
atexit.register(my_cleanup,'first')
atexit.register(my_cleanup,'second')
atexit.register(my_cleanup,'third')
atexit.unregister(my_cleanup)
对同一个回调的所有调用都会被撤销,而不论它注册了多少次。
删除原来未注册的回调不会被视为一个错误。
import atexit
def my_cleanup(name):
print('my_cleanup({})'.format(name))
if False:
atexit.register(my_cleanup,'never registered')
atexit.unregister(my_cleanup)
因为其会悄悄地忽略未知的回调,所以即使在注册序列未知的情况下也可以使用unregister()。