Python 队列阻塞 get()时没反应
2022/3/8 9:14:48
本文主要是介绍Python 队列阻塞 get()时没反应,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
当队列为空时,执行get(),不会报异常
会进入阻塞状态,直到队列中有东西可取为止
from queue import Queue taskQueue = Queue() taskQueue.put('queue task 1') print(f'队列长度:{taskQueue.qsize()}') print(f'取值:{taskQueue.get()}') print(f'队列长度:{taskQueue.qsize()}') print(f'取值:{taskQueue.get()}') # 在这里阻塞 print('END')
block=False
未取得值时,不进入阻塞状态,抛出异常
from queue import Queue try: taskQueue = Queue() taskQueue.put('queue task 1') print(f'队列长度:{taskQueue.qsize()}') print(f'取值:{taskQueue.get()}') print(f'队列长度:{taskQueue.qsize()}') print(f'取值:{taskQueue.get(block=False)}') # 在这里抛出异常 except: pass print('END')
timeout
超时未取得值时,抛出异常
import time from queue import Queue from threading import Thread taskQueue = Queue() # 5秒往队列中put一次 def queue_put(): for i in range(1, 101): print('queue put') taskQueue.put(f'queue task {i}') time.sleep(5) # timeout 超时时间内,未取得值,会抛出异常 def queue_get(): while 1: print(f'取值:{taskQueue.get(timeout=3)}') t1 = Thread(target=queue_put) t1.start() t2 = Thread(target=queue_get) t2.start()
这篇关于Python 队列阻塞 get()时没反应的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01Python编程基础知识
- 2024-11-01Python编程基础
- 2024-10-31Python基础入门:理解变量与数据类型
- 2024-10-30Python股票自动化交易资料详解与实战指南
- 2024-10-30Python入行:新手必读的Python编程入门指南
- 2024-10-30Python入行:初学者必备的编程指南
- 2024-10-30Python编程入门指南
- 2024-10-30Python量化交易学习:新手入门指南
- 2024-10-30Python股票自动化交易实战入门教程
- 2024-10-29Python股票自动化交易教程:新手入门指南