Ctrl-C不会中断semaphore.acquire

时间:2011-05-06 21:11:49

标签: python multithreading semaphore

while True:
    try:
        queries_semaphore.acquire()
        query = queries.pop(0)
        # Do some stuff ...
        info('Query executed: `%s\'' % str(query))
    except KeyboardInterrupt:
        okay('quit')
        break

问题是 KeyboardInterrupt返回后仅{em>引发queries_semaphore.acquire(),因此用户无法使用Ctrl-C中断程序。在这种情况下,什么是一个好的解决方案?

1 个答案:

答案 0 :(得分:3)

我会为queries_semaphore.acquire()创建另一个线程,并保留主线程以便与用户交互。如果用户按下Ctrl-C,则应通过设置信号量来解锁工作线程并完成它。