gpt4 book ai didi

python - Python 中的键盘可中断阻塞队列

转载 作者:太空狗 更新时间:2023-10-29 17:48:19 24 4
gpt4 key购买 nike

好像是

import Queue

Queue.Queue().get(timeout=10)

是键盘可中断的(ctrl-c)而

import Queue

Queue.Queue().get()

不是。我总能创建一个循环;

import Queue
q = Queue()

while True:
try:
q.get(timeout=1000)
except Queue.Empty:
pass

但这似乎是一件奇怪的事情。

那么,有没有办法得到一个无限期等待但键盘可中断的 Queue.get()?

最佳答案

Queue 对象具有此行为,因为它们使用 Condition 对象锁定形成 threading 模块。所以您的解决方案确实是唯一的出路。

但是,如果您真的想要一个执行此操作的Queue 方法,您可以对Queue 类进行monkeypatch。例如:

def interruptable_get(self):
while True:
try:
return self.get(timeout=1000)
except Queue.Empty:
pass
Queue.interruptable_get = interruptable_get

这会让你说

q.interruptable_get()

代替

interruptable_get(q)

虽然在这种情况下 Python 社区通常不鼓励使用 monkeypatching,因为常规函数看起来同样好。

关于python - Python 中的键盘可中断阻塞队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/212797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com