thread.interrupt_main() не работает при ожидании ввода

Я читал об этой методике тайм-аута, блокирующего операции ввода-вывода, но проблема в том, что она не работает. например:

import thread, threading

def read_timeout(prompt, timeout=10.0):
    timer = threading.Timer(timeout, thread.interrupt_main)
    s = ''
    timer.start()

    try:
        s = raw_input(prompt)
    except KeyboardInterrupt:
        print 'operation timed out.'

    timer.cancel()
    return s

s = read_timeout('enter input: ')

if s:
    print 'you entered: %s' % s

это не прервет основной поток до тех пор, пока не вернется raw_input(). Любая помощь приветствуется.

Обновление:

Использование os.kill(os.getpid(), signal.SIGINT)вместо thread.interrupt_main(), кажется, работает (по крайней мере, в Linux , что не дает мне той портативности, которую я изначально хотел). Однако мне все еще интересно, почему приведенный выше код не работает.

6
задан Amr 1 June 2012 в 14:21
поделиться