signal.alarm replacement in Windows [Python]

后端 未结 4 607
情深已故
情深已故 2020-12-03 20:53

I have a function that occasionally hangs.

Normally I would set an alarm, but I\'m in Windows and it\'s unavailable.

Is there a simple way around this, or sh

4条回答
  •  广开言路
    2020-12-03 21:49

    I realize this thread has been inactive for some time, but I faced a similar issue and hope that someone else may find this useful as well.

    As @jfs mentioned in a useful comment, the standard threading module provides a Timer method that works really well for this (docs). It is just a subclass of threading.Thread, but it makes this very simple and clean. It can also be canceled using the inherited cancel method.

    import threading
    delay_time = 3   # delay time in seconds
    def watchdog():
      print('Watchdog expired. Exiting...')
      os._exit(1)
    
    alarm = threading.Timer(delay_time, watchdog)
    alarm.start()
    my_potentially_never_ending_call()
    alarm.cancel()
    

提交回复
热议问题