2010-03-26 2 views
3

Я хочу сделать Waf генерировать звуковой сигнал, когда он завершит выполнение любой команды, которая заняла более 10 секунд.Как добавить код, который всегда выполняется Waf перед выходом?

Я не знаю, как добавить это и заверить, что код выполняется при выходе Waf.

Это должно выполняться для любой команды Waf не только для сборки.

Я проверил Waf book, но я не смог найти никаких указаний о том, как мне это сделать.

ответ

4

В модуле wscript вы можете использовать стандартную библиотеку Python atexit для регистрации вызываемых вызовов, которые вы хотите вызвать при выходе из процесса. Например:

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 - «добавить код, который всегда выполняется при выходе».

+0

3 звуковых сигнала могут разбудить кого угодно! – sorin