【问题标题】:Ctrl-C doesn't interrupt semaphore.acquireCtrl-C 不会中断 semaphore.acquire
【发布时间】:2011-05-06 21:11:49
【问题描述】:
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 仅在 queries_semaphore.acquire() 返回后才被引发,因此用户无法使用 Ctrl-C 中断程序。在这种情况下有什么好的解决方案?

【问题讨论】:

    标签: python multithreading semaphore


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 2020-07-08
    • 2021-12-15
    • 2021-05-19
    相关资源
    最近更新 更多