如何在退出之前添加总是由Waf执行的代码?

时间:2010-03-26 11:16:18

标签: python waf

我想让Waf在完成任何超过10秒的命令执行时发出蜂鸣声。

我不知道如何添加它并确保代码在Waf退出时执行。

这应该适用于任何Waf命令,而不仅仅是构建。

我检查了Waf book,但我无法找到任何关于我该怎么办的说明。

1 个答案:

答案 0 :(得分:4)

wscript模块中,您可以使用Python标准库的atexit来注册在进程退出时要调用的callable。例如:

import atexit
import time

class MayBeep(object):
  def __init__(self, deadline=10.0):
    self.deadline = time.time() + deadline
  def __call__(self):
    if time.time() > self.deadline():
      print '\7'

atexit.register(MayBeep())

... rest of your wscript module ...

当然,你可以使用比print '\7'更好的东西用于哔哔声(一直到成熟的多媒体盛会,取决于你导入和使用的其他Python扩展),但这段代码回答了Q的标题 - - “添加在退出时始终执行的代码”。