我知道Queue.get()python中的方法是一个阻塞函数.我需要知道我是否在main中实现了这个函数,等待一个线程设置的对象,这是否意味着所有的main都将被阻塞.
例如,如果主要包含发射器和接收器的功能,两者是否一起工作?
Mic*_*x2a 13
是 - 如果some_queue.get()在线程或main函数内调用,程序将阻塞,直到某个对象通过队列.
但是,可以使用队列以便它们不会阻塞,或者它们具有某种类型的超时:
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
Run Code Online (Sandbox Code Playgroud)
您可以执行相同操作some_queue.put- some_queue.put(item, False)对于非阻塞队列或some_queue.put(item, True, 3)超时.如果您的队列有大小限制,Queue.Full如果没有剩余空间来追加新项目,它将抛出异常.