Using variables in signal handler - require global?

后端 未结 5 1901
不思量自难忘°
不思量自难忘° 2021-01-01 10:10

I have a signal handler to handle ctrl-c interrupt. If in the signal handler I want to read a variable set in my main script, is there an alternative to using a \"global\" s

5条回答
  •  一个人的身影
    2021-01-01 11:14

    You can use partial to create a "closure".

    import signal
    from functools import partial
    
    def signal_handler(g_var, signal, frame):
        print "in sig handler - g_var=%s" % g_var
    
    def main():
        g_var = "test"
        signal.signal(signal.SIGINT, partial(signal_handler, g_var))
    
        time.sleep(120)
    
    
    if __name__ == '__main__':
        main()
    

提交回复
热议问题