gpt4 book ai didi

python - Queue.get 会阻塞 main 吗?

转载 作者:太空狗 更新时间:2023-10-29 22:06:51 39 4
gpt4 key购买 nike

我知道 python 中的 Queue.get() 方法是一个阻塞函数。我需要知道如果我在main里面实现了这个函数,等待一个线程设置的对象,这是否意味着所有的main都会被阻塞。

例如,如果 main 包含发送器和接收器的功能,两者是否可以一起工作?

最佳答案

是的——如果您在线程或main 函数中调用some_queue.get(),程序将阻塞在那里直到某个对象通过队列.


但是,可以使用队列,以便它们 don't block ,或者他们有某种超时:

import Queue

while True:
try:
data = some_queue.get(False)
# If `False`, the program is not blocked. `Queue.Empty` is thrown if
# the queue is empty
except Queue.Empty:
data = None

try:
data2 = some_queue.get(True, 3)
# Waits for 3 seconds, otherwise throws `Queue.Empty`
except Queue.Empty:
data = None

您可以为 some_queue.put 做同样的事情——要么为非阻塞队列做 some_queue.put(item, False),要么为 some_queue。 put(item, True, 3) 用于超时。如果您的队列有大小限制,如果没有更多空间来追加新项目,它将抛出 Queue.Full 异常。

关于python - Queue.get 会阻塞 main 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19206130/

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