Utilisation de variables dans le gestionnaire de signal - besoin global?

J'ai un gestionnaire de signal pour traiter ctrl-c interrompre. Si dans le gestionnaire de signal je veux lire une variable définie dans mon script principal, est-il une alternative à l'utilisation d'un "global" instruction lors de la définition de la variable?

Je ne me dérange pas de le faire, mais lire ce post (Utilisez-vous le "global" instruction en Python?) dans laquelle quelqu'un a fait remarquer qu'il devrait y avoir aucune raison de jamais utiliser mondiale.

Quelle est l'alternative dans ce cas?

Mon code ressemble à ceci:


def signal_handler(signal, frame):
    print "in sig handler - g_var=%s" % g_var

def main():
    global g_var
    g_var = "test"

    time.sleep(120)


if __name__ == '__main__':
    signal.signal(signal.SIGINT, signal_handler)
    main()

OriginalL'auteur Joe Watkins | 2012-09-11