Тъй като не работите с нишки (и предполагам, че това е умишлено и в някои случаи разумно), трябва да използвате тип прекъсване. Сигналите са вид прекъсване в Unix системи, за да ви позволи да се върнете към обратно повикване по време на повикване, което може да блокира.
Този пример за отворен файл, който никога няма да се върне, е в съответствие с това, което искате да направите. Взето е от http://docs.python.org/library/signal.html#module-signal
Но предупреждение. Тъй като Python използва Global Interpreter Lock за извършване на обработка на сигнали на ОС, той е обект на някои проблеми със стабилността. Тези проблеми обаче обикновено трябва да са редки.
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