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中断程序。在这种情况下,什么是一个好的解决方案?
答案 0 :(得分:3)
我会为queries_semaphore.acquire()创建另一个线程,并保留主线程以便与用户交互。如果用户按下Ctrl-C,则应通过设置信号量来解锁工作线程并完成它。