Omdat je niet aan het threaden bent (en ik neem aan dat dit opzettelijk is en in sommige gevallen verstandig), moet je een soort interrupt gebruiken. Signalen zijn een soort onderbreking op Unix-systemen waarmee u kunt terugkeren naar een terugbelverzoek tijdens een gesprek dat zou kunnen blokkeren.
Dit voorbeeld van een geopend bestand dat nooit meer terugkomt, komt overeen met wat u wilt doen. Het is afkomstig van http://docs.python.org/library/signal.html#module-signal
Maar een waarschuwing. Omdat Python een Global Interpreter Lock gebruikt om OS-signaalverwerking uit te voeren, is het onderhevig aan enkele stabiliteitsproblemen. Deze problemen zouden normaal gesproken echter zeldzaam moeten zijn.
import signal, os
def handler(signum, frame):
print 'Signal handler called with signal', signum
raise IOError("Couldn't open device!")
# Set the signal handler and a 5-second alarm
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)
# This open() may hang indefinitely
fd = os.open('/dev/ttyS0', os.O_RDWR)
signal.alarm(0) # Disable the alarm