python-Ctrl-C不会中断semaphore.acquire

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

问题在于,仅在querys_semaphore.acquire()返回之后才引发KeyboardInterrupt,因此用户无法使用Ctrl-C来中断程序.在这种情况下,什么是好的解决方案?

解决方法:

我将为query_semaphore.acquire()部分创建另一个线程,并保留主线程与用户交互.如果用户按Ctrl-C,则应该通过设置信号量并完成它来解除阻塞工作线程.

上一篇:JUC知识点汇总


下一篇:Java多线程并发工具类-信号量Semaphore对象讲解